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");
}
}