ライブラリの追加
build.gradle
compile group: 'ch.qos.logback', name: 'logback-classic', version: '1.2.3'
Logbackの設定 - logback.xmlを追加する
src/main/resourcesを作成
(Eclipseを使っている前提)
- New > Source Folder
Folder name: src/main/resources
logback.xmlを作成
logback.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE logback>
<configuration>
<appender name="STDOUT"
class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%msg%n</pattern>
</encoder>
</appender>
<root>
<appender-ref ref="STDOUT" />
</root>
</configuration>
public class Library {
public static void main(String[] args) {
Logger logger = LoggerFactory.getLogger(Library.class);
logger.warn("warn message");
logger.info("info message");
}
}
Console
warn message
info message
logback.xmlの「%msg%n」が効いていることを確認。
単純にファイルに吐き出すように設定
logback.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE logback>
<configuration>
<property name="LOG_DIR" value="./logs" />
<property name="FILE_PREFIX" value="logback" />
<timestamp key="time" datePattern="yyyyMMdd_HHmmss" />
<appender name="FILE" class="ch.qos.logback.core.FileAppender">
<file>${LOG_DIR}/${FILE_PREFIX}_${time}.log</file>
<encoder>
<pattern>%date %level [%thread] %logger{10} [%file:%line] %msg%n</pattern>
</encoder>
</appender>
<root>
<appender-ref ref="FILE" />
</root>
</configuration>
ログファイル数を制限したい
注意
コピペでログファイルを作成すると正常に動作しなくなるので気を付ける
fileNamePatternの"%d"トークンで指定した最小単位で削除されていく
maxHistoryで保持するログファイル数を設定(現在書き込み中のログファイルは数えない)
cleanHistoryOnStartがないと削除されない
毎分ごと削除されていく設定
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE logback>
<configuration>
<property name="LOG_DIR" value="./logs" />
<property name="FILE_PREFIX" value="logback" />
<appender name="ROLLING"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<param name="Append" value="false" />
<rollingPolicy
class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${LOG_DIR}/${FILE_PREFIX}-%d{yyyyMMddHHmm}.log</fileNamePattern>
<cleanHistoryOnStart>true</cleanHistoryOnStart>
<maxHistory>1</maxHistory>
</rollingPolicy>
<encoder>
<pattern>%d{yyyy-MM-dd'T'HH:mm:ss'Z'} - %m%n</pattern>
</encoder>
</appender>
<root>
<appender-ref ref="ROLLING" />
</root>
</configuration>
ログファイルのサイズを制限したい
ポイントはfileNamePattern に %i を追加しているところ
logback.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE logback>
<configuration>
<property name="LOG_DIR" value="./logs" />
<property name="FILE_PREFIX" value="logback" />
<timestamp key="time" datePattern="yyyyMMdd_HHmmss" />
<appender name="ROLLING"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${LOG_DIR}/${FILE_PREFIX}.log</file>
<rollingPolicy
class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${LOG_DIR}/${FILE_PREFIX}-%d{yyyyMMdd_HH}.%i.log</fileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy
class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<!-- or whenever the file size reaches 100MB -->
<maxFileSize>5KB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
<encoder>
<pattern>%d{yyyy-MM-dd'T'HH:mm:ss'Z'} - %m%n</pattern>
</encoder>
</appender>
<root>
<appender-ref ref="ROLLING" />
</root>
</configuration>
logback.xml
logback.xml
その他
設定状況もログで表示させたい
下記をappenderタグの下に追加
<param name="Append" value="false" />
spring-boot
- logback.xmlではなく logback-spring.xmlというファイル名にするのが主流
- 下記をrootタグと同じ階層においてあげると、速度が速くなる
logback-spring.xml
<include resource="org/springframework/boot/logging/logback/defaults.xml" />