Spring Bootでコンソールロギングを無効にする方法

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にあります。