Spring Bootでコンソールロギングを無効にする方法
1. 概要
通常、コンソールログを使用すると、簡単で直感的な方法でシステムをデバッグできます。 それでも、システムでこの機能を有効にしたくない場合があります。
このクイックチュートリアルでは、we’ll see how to avoid logging to the console when running a Spring Boot application。
Logback、Log4js2、またはJava Util Loggingフレームワークを使用しているかどうかにかかわらず、これを実現する方法を示すわかりやすい例を使用して、簡単に説明します。
Spring Bootのロギングフレームワークの詳細については、Logging in Spring Bootのチュートリアルをご覧になることをお勧めします。
2. ログバックのコンソール出力を無効にする方法
プロジェクトでSpring Boot startersを使用している場合は、spring-boot-starter-loggingの依存関係も含まれます。
この特定のスターターは、Logbackをデフォルトのフレームワークとして構成し、最初はデフォルトでコンソールにのみログを記録します。
この構成は次のようになります logback-spring.xmlファイルをリソースに追加してカスタマイズしました。
たとえば、コンソール出力を無効にしてファイルにのみログを記録するようにXMLを設定しましょう。
さらに、application.properties ファイルにlogging.file構成プロパティが必要です。
logging.file=example-disabled-console.log
注:ここで実際にコンソール出力を無効にしているのは、XML ファイルにconsole-appender.xml が含まれていないため、空のconfigurationタグでもうまくいくという事実です。
Alternatively,we can avoid creating the XML file by overriding the default configuration with application properties。
たとえば、logging.pattern.console propertyを利用できる可能性があります。
logging.pattern.console=
このプロパティはCONSOLE_LOG_PATTERNシステムプロパティに変換され、Springのデフォルトのコンソール構成で使用されます。
This approach, of course, isn’t as clean and solid as the previous one。 これはプロパティの意図された目的ではないため、この「ハック」はある時点でLogbackによってサポートされない可能性があります。
さらに、ルートロガーレベルの値をOFFに設定することで、すべてのログアクティビティを無効にできます。
logging.level.root=OFF
3. Log4j2を使用したコンソールでのロギングを回避する方法
ご存知かもしれませんが、Log4j2は、XML、JSON、YAML、またはプロパティ形式をサポートして、ロギング動作を構成します。
簡単にするために、今回はlog4j2.xmlファイルの簡単な例を示します。
他の形式は同じ構成構造を尊重します。
ログバック設定と同様に、フレームワークがコンソールへのログ記録を回避する理由は、構成自体ではなく、ルートロガーにコンソールアペンダーへの参照が含まれていないという事実です。
4. Java Utilロギングのコンソールロギングを無効にする方法
Java Util Logging(または単に「JUL」)は、最近のSpring Bootアプリケーションの最も一般的なロギングソリューションではないかもしれません。
とにかく、フレームワークがプロジェクトに存在する場合に、コンソールログを取り除く方法を分析します。
リソースフォルダのデフォルトのlogging.properties に次の値を追加するだけです。
handlers=java.util.logging.FileHandler
java.util.logging.FileHandler.pattern=example.log
java.util.logging.FileHandler.formatter=java.util.logging.SimpleFormatter
そして、application.properties ファイルにlogging.fileプロパティを含めます。 どの値でもトリックを行います:
logging.file=true
5. 結論
これらの短い例を使用すると、使用しているログフレームワークに関係なく、アプリケーションのコンソールログを手間のかからない方法で無効にできます。
いつものように、例の実装はour Github repositoryにあります。