SpringBoot-ロギング

Spring Bootは、すべての内部ロギングにApacheCommonsロギングを使用します。Spring Bootのデフォルト構成は、Java Util Logging、Log4j2、およびLogbackの使用をサポートします。これらを使用して、コンソールログとファイルログを構成できます。

Spring Boot Startersを使用している場合、Logbackはロギングの優れたサポートを提供します。さらに、Logbackは、Common Logging、Util Logging、Log4J、およびSLF4Jの優れたサポートの使用も提供します。

ログ形式

デフォルトのSpringBoot Log形式は、以下のスクリーンショットに示されています。

これはあなたに次の情報を与えます-

  • Date そして Time ログの日付と時刻を示します

  • Log level INFO、ERROR、またはWARNを表示します

  • Process ID

  • ---セパレーターです

  • Thread name 角括弧[]で囲まれています

  • Logger Name ソースクラス名を示しています

  • ログメッセージ

コンソールログ出力

デフォルトのログメッセージがコンソールウィンドウに出力されます。デフォルトでは、「INFO」、「ERROR」、および「WARN」のログメッセージがログファイルに出力されます。

デバッグレベルのログを有効にする必要がある場合は、以下に示すコマンドを使用して、アプリケーションの起動時にデバッグフラグを追加します。

java –jar demo.jar --debug

次に示すように、application.propertiesファイルにデバッグモードを追加することもできます。

debug = true

ファイルログ出力

デフォルトでは、すべてのログはファイルではなくコンソールウィンドウに印刷されます。ログをファイルに出力する場合は、プロパティを設定する必要がありますlogging.file または logging.path application.propertiesファイル内。

以下に示すプロパティを使用して、ログファイルのパスを指定できます。ログファイル名はspring.logであることに注意してください。

logging.path = /var/tmp/

以下に示すプロパティを使用して、独自のログファイル名を指定できます-

logging.file = /var/tmp/mylog.log

Note −ファイルはサイズ10MBに達すると自動的に回転します。

ログレベル

Spring Bootは、「TRACE」、「DEBUG」、「INFO」、「WARN」、「ERROR」、「FATAL」、「OFF」などのすべてのロガーレベルをサポートします。以下に示すように、application.propertiesファイルでルートロガーを定義できます。

logging.level.root = WARN

Note−ログバックは「FATAL」レベルのログをサポートしていません。「ERROR」レベルのログにマップされます。

ログバックを構成する

Logbackは、Spring BootLog構成を処理するためのXMLベースの構成をサポートします。ロギング構成の詳細は、logback.xmlファイル。logback.xmlファイルはクラスパスの下に配置する必要があります。

以下のコードを使用して、Logback.xmlファイルでROOTレベルのログを構成できます。

<?xml version = "1.0" encoding = "UTF-8"?>
<configuration>
   <root level = "INFO">
   </root>
</configuration>

以下に示すLogback.xmlファイルでコンソールアペンダーを構成できます。

<?xml version = "1.0" encoding = "UTF-8"?>
<configuration>
   <appender name = "STDOUT" class = "ch.qos.logback.core.ConsoleAppender"></appender>
   <root level = "INFO">
      <appender-ref ref = "STDOUT"/> 
   </root>
</configuration>

以下のコードを使用して、Logback.xmlファイルでファイルアペンダーを構成できます。ファイルアペンダー内でログファイルパスを指定する必要があることに注意してください。

<?xml version = "1.0" encoding = "UTF-8"?>
<configuration>
   <appender name = "FILE" class = "ch.qos.logback.core.FileAppender">
      <File>/var/tmp/mylog.log</File>
   </appender>   
   <root level = "INFO">
      <appender-ref ref = "FILE"/>
   </root>
</configuration>

ログパターンはで定義できます logback.xml以下のコードを使用してファイルを作成します。以下のコードを使用して、コンソールまたはファイルログアペンダー内でサポートされているログパターンのセットを定義することもできます。

<pattern>[%d{yyyy-MM-dd'T'HH:mm:ss.sss'Z'}] [%C] [%t] [%L] [%-5p] %m%n</pattern>

完全なlogback.xmlファイルのコードを以下に示します。これをクラスパスに配置する必要があります。

<?xml version = "1.0" encoding = "UTF-8"?>
<configuration>
   <appender name = "STDOUT" class = "ch.qos.logback.core.ConsoleAppender">
      <encoder>
         <pattern>[%d{yyyy-MM-dd'T'HH:mm:ss.sss'Z'}] [%C] [%t] [%L] [%-5p] %m%n</pattern>
      </encoder>
   </appender>
   
   <appender name = "FILE" class = "ch.qos.logback.core.FileAppender">
      <File>/var/tmp/mylog.log</File>
      <encoder>
         <pattern>[%d{yyyy-MM-dd'T'HH:mm:ss.sss'Z'}] [%C] [%t] [%L] [%-5p] %m%n</pattern>
      </encoder>
   </appender>
   
   <root level = "INFO">
      <appender-ref ref = "FILE"/>
      <appender-ref ref = "STDOUT"/> 
   </root>
</configuration>

以下のコードは、SpringBootメインクラスファイルにslf4jロガーを追加する方法を示しています。

package com.tutorialspoint.demo;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class DemoApplication {
   private static final Logger logger = LoggerFactory.getLogger(DemoApplication.class);
   
   public static void main(String[] args) {
      logger.info("this is a info message");
      logger.warn("this is a warn message");
      logger.error("this is a error message");
      SpringApplication.run(DemoApplication.class, args);
   }
}

コンソールウィンドウに表示される出力を次に示します-

ログファイルで確認できる出力を次に示します-