Spring Boot 2 ログ出力

標準

機能

ロガー

ログ出力インスタンス
通常ã€finalã€static属性ã¨ã™ã‚‹

ログレベル

trace → debug → info → warn → error
設定ã—ãŸãƒ­ã‚°ãƒ¬ãƒ™ãƒ«ä»¥ä¸Šã®ãƒ¬ãƒ™ãƒ«ã‚’出力å¯èƒ½
ログレベル:infoを設定ã—ãŸå ´åˆã€traceã€debugã¯ä½¿ç”¨Ã—

ログパターン

<encoder>
 <pattern>パターン</pattern>
</encoder>
ã§æŒ‡å®š
%å¤‰æ›æŒ‡å®šå­{オプション}

å¤‰æ›æŒ‡å®šå­ 機能
%d{yyyyMMddHHmmss} 日時
%m ãƒ­ã‚¬ãƒ¼ã«æ¸¡ã—ãŸæ–‡å­—列
%p ログレベル
%t スレッドå
%n 改行

pom.xml

<dependencies>
 <dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-web</artifactId>
 </dependency>
</dependencies>

application.properties

logging.file=test.log
logging.level.org.springframework.web=INFO
logging.level.root=WARN
logging.level.org.springframework.web=DEBUG
logging.level.org.hibernate=ERROR
TRACEã€DEBUGã€INFOã€WARNã€ERRORã€FATALã€OFF

App.java

package lib.myId;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class App implements CommandLineRunner
{
 private static final Logger logger = LoggerFactory.getLogger(App.class);
 ~
 public void run(String… arg0) throws Exception {
  logger.debug("debug");
  logger.info("info");
  logger.error("error");
 }
}

ファイル構æˆ

mySpringBatch
â””src
 └main
  └java
   └lib
    └myId
     └App.java
 └resources
  └config
   └application.properties
 src
 └test
 target
 └classes
 .settings
 └~
 .classpath
 .project
 pom.xml

 test.log

logback

logback-spring.xml

フォーマット

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE logback>
<configuration>
 ログ設定①
 appenderå˜ä½ã§å€‹åˆ¥ã®ãƒ­ã‚°ã‚’設定
 <appender name="設定åâ‘ " class="~">
  <file>ログファイルåâ‘ </file>
  <rollingPolicy class="~">
   <fileNamePattern>自動生æˆãƒ•ァイルåパターン</fileNamePattern>
   <maxHistory>ログファイルã®å¯¿å‘½</maxHistory>
  </rollingPolicy>
  <encoder>
   <charset>UTF-8</charset>
   <pattern>出力内容</pattern>
  </encoder>
 </appender>

 ログ設定②
 <appender name="設定åâ‘¡" class="~">
  ~
 </appender>

 アプリå´å‚ç…§å定義
 <logger name="å‚ç…§åâ‘ "
  additivity="false">
  <level value="レベル" />
  <appender-ref ref="設定åâ‘ " />
 </logger>

 <logger name="å‚ç…§åâ‘¡"
  ~ />
 </logger>

 標準ログ設定
 <root level="INFO">
  <appender-ref ref="設定å" />
 </root>
</configuration>

例

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE logback>
<configuration>
 …
 <!–出力ルール①~コンソール~ –>
 <appender name="STDOUT"
  class="ch.qos.logback.core.ConsoleAppender">
  <target>System.out</target>
  <encoder>
   <pattern>出力内容</pattern>
  </encoder>
 </appender>
 <!–出力ルール②~WEB~ –>
 <appender name="FILE_WEB"
  class="ch.qos.logback.core.rolling.RollingFileAppender">
  <file>ログファイルå</file>
  <rollingPolicy
   class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
   <fileNamePattern>自動生æˆãƒ•ァイルåパターン</fileNamePattern>
   <maxHistory>ログファイルã®å¯¿å‘½</maxHistory>
  </rollingPolicy>
  <encoder>
   <charset>UTF-8</charset>
   <pattern>出力内容</pattern>
  </encoder>
 </appender>
 <!–出力ルール③~ãƒãƒƒãƒï½ž –>
 <appender name="FILE_BATCH"
  class="ch.qos.logback.core.rolling.RollingFileAppender">
  <file>ログファイルå</file>
  <rollingPolicy
   class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
   <fileNamePattern>自動生æˆãƒ•ァイルåパターン</fileNamePattern>
   <maxHistory>ログファイルã®å¯¿å‘½</maxHistory>
  </rollingPolicy>
  <encoder>
   <charset>UTF-8</charset>
   <pattern>出力内容</pattern>
  </encoder>
 </appender>
 
</configuration>

App.java

package lib.myId;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class App implements CommandLineRunner
{
 private static final Logger logger1 = LoggerFactory.getLogger(å‚ç…§åâ‘ );
 private static final Logger logger2 = LoggerFactory.getLogger(å‚ç…§åâ‘¡);

 ~
 public void run(String… arg0) throws Exception {
  logger1.info("info");
  logger1.error("error");
  
  logger2.info("info");
  logger2.error("error");
 }
}

Follow me!