SpringBootでコンソールロギングを無効にする方法
1. 概要
通常、コンソールログは、簡単で直感的な方法でシステムをデバッグする機会を提供します。 それでも、システムでこの機能を有効にしたくない場合があります。
このクイックチュートリアルでは、 Spring Bootアプリケーションを実行しているときに、コンソールへのログ記録を回避する方法を説明します。
Logback、Log4js2、またはJava Util Loggingフレームワークを使用しているかどうかにかかわらず、これを実現する方法を示すわかりやすい例を使用して、簡単に説明します。
Spring Bootのロギングフレームワークの詳細については、 Logging in SpringBootチュートリアルを参照することをお勧めします。
2. ログバックのコンソール出力を無効にする方法
プロジェクトでSpringBoot starters を使用している場合は、spring-boot-starter-logging依存関係も含まれます。
この特定のスターターは、 Logback をデフォルトのフレームワークとして構成し、最初はデフォルトでコンソールにのみログを記録します。
この構成は次のようになります logback-spring.xmlファイルをリソースに追加してカスタマイズしました。
たとえば、コンソール出力を無効にしてファイルにのみログを記録するようにXMLを設定しましょう。
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<include resource=
"org/springframework/boot/logging/logback/defaults.xml" />
<include resource=
"org/springframework/boot/logging/logback/file-appender.xml" />
<root level="INFO">
<appender-ref ref="FILE" />
</root>
</configuration>
さらに、application.propertiesファイルにlogging.file構成プロパティが必要です。
logging.file=baeldung-disabled-console.log
注:ここで実際にコンソール出力を無効にしているのは、XMLファイルにconsole-appender.xmlが含まれていないため、構成タグもそのトリックを行います。
または、 デフォルト構成をアプリケーションプロパティでオーバーライドすることにより、XMLファイルの作成を回避できます。
たとえば、logging.pattern.consoleプロパティを利用できる可能性があります。
logging.pattern.console=
このプロパティはCONSOLE_LOG_PATTERNシステムプロパティに変換され、Springのデフォルトのコンソール構成で使用されます。
もちろん、このアプローチは以前のアプローチほどクリーンで堅実ではありません。 これはプロパティの意図された目的ではないため、この「ハック」はある時点でLogbackによってサポートされない可能性があります。
さらに、ルートロガーレベルの値を OFF に設定することで、すべてのログアクティビティを無効にできます。
logging.level.root=OFF
3. Log4j2を使用してコンソールにログインしないようにする方法
ご存知かもしれませんが、 Log4j2 は、XML、JSON、YAML、またはプロパティ形式をサポートして、ログの動作を構成します。
わかりやすくするために、今回はlog4j2.xmlファイルの簡単な例を示します。
他の形式は同じ構成構造を尊重します。
<Configuration status="INFO">
<Appenders>
<File name="MyFile" fileName="baeldung.log"
immediateFlush="true" append="false">
<PatternLayout pattern=
"%d{yyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
</File>
</Appenders>
<Loggers>
<Root level="info">
<AppenderRef ref="MyFile"/>
</Root>
</Loggers>
</Configuration>
ログバックの設定と同様に、フレームワークがコンソールへのログ記録を回避する理由は、構成自体ではなく、ルートロガーにコンソールアペンダーへの参照が含まれていないという事実です。
4. JavaUtilロギングのコンソールロギングを無効にする方法
Java Util Logging(または単に「JUL」)は、最近のSpring Bootアプリケーションで最も一般的なロギングソリューションではない可能性があります。
とにかく、フレームワークがプロジェクトに存在する場合に、コンソールログを取り除く方法を分析します。
リソースフォルダのデフォルトのlogging.propertiesに次の値を追加するだけです。
handlers=java.util.logging.FileHandler
java.util.logging.FileHandler.pattern=baeldung.log
java.util.logging.FileHandler.formatter=java.util.logging.SimpleFormatter
そして、logging.fileプロパティをapplication.propertiesファイルに含めます。 どの値でもうまくいきます:
logging.file=true
5. 結論
これらの短い例を使用すると、使用しているログフレームワークに関係なく、アプリケーションのコンソールログを手間のかからない方法で無効にできます。
いつものように、Githubで例の実装を見つけることができます。