
デフォルトでは、SLF4jロギングはSpringブートスターターパッケージに含まれています。
application.properties
spring-boot-web-project$ mvn dependency:tree +... +- org.springframework.boot:spring-boot-starter-logging:jar:1.4.2.RELEASE:compile[INFO]| | | +- ch.qos.logback:logback-classic:jar:1.1.7:compile[INFO]| | | | \- ch.qos.logback:logback-core:jar:1.1.7:compile[INFO]| | | +- org.slf4j:jcl-over-slf4j:jar:1.7.21:compile[INFO]| | | +- org.slf4j:jul-to-slf4j:jar:1.7.21:compile[INFO]| | | \- org.slf4j:log4j-over-slf4j:jar:1.7.21:compile +...
1. application.properties
ロギングを有効にするには、
resources`フォルダのルートに
application.properties`ファイルを作成します。
1.1
logging.level
– ログレベルを定義すると、ログがコンソールに出力されます。
application.properties
logging.level.org.springframework.web=ERROR logging.level.com.mkyong=DEBUG
1.2
logging.file
– ロギングファイルを定義すると、ロギングはファイルとコンソールに出力されます。
application.properties
logging.level.org.springframework.web=ERROR
logging.level.com.mkyong=DEBUG
#output to a temp__folder/file
logging.file=${java.io.tmpdir}/application.log
#output to a file
#logging.file=/Users/mkyong/application.log
1.3
logging.pattern
– カスタムロギングパターンを定義します。
application.properties
logging.level.org.springframework.web=ERROR
logging.level.com.mkyong=DEBUG
# Logging pattern for the console
logging.pattern.console= "%d{yyyy-MM-dd HH:mm:ss} - %msg%n"
# Logging pattern for file
logging.pattern.file= "%d{yyyy-MM-dd HH:mm:ss}[%thread]%-5level %logger{36} - %msg%n"
logging.file=/Users/mkyong/application.log
2. application.yml
これはYAML形式と同等です。
application.yml
logging:
level:
org.springframework.web: ERROR
com.mkyong: DEBUG
pattern:
console: "%d{yyyy-MM-dd HH:mm:ss} - %msg%n"
file: "%d{yyyy-MM-dd HH:mm:ss}[%thread]%-5level %logger{36} - %msg%n"
file:/Users/mkyong/application.log
3. Classic Logback.xml
Springブートロギングテンプレートが気に入らなければ、
resources`フォルダのルートまたはクラスパスのルートに標準の
logback.xml`を作成してください。これにより、Springブートロギングテンプレートが上書きされます。
logback.xml
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<property name="DEV__HOME" value="c:/logs"/>
<appender name="FILE-AUDIT"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${DEV__HOME}/debug.log</file>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<Pattern>
%d{yyyy-MM-dd HH:mm:ss} - %msg%n
</Pattern>
</encoder>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- rollover daily -->
<fileNamePattern>${DEV__HOME}/archived/debug.%d{yyyy-MM-dd}.%i.log
</fileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy
class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>10MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
</appender>
<logger name="com.mkyong" level="debug"
additivity="false">
<appender-ref ref="FILE-AUDIT"/>
</logger>
<root level="error">
<appender-ref ref="FILE-AUDIT"/>
</root>
</configuration>
4.プロファイルによるSpringブートロギング
-
注** この記事を読む –
https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-logging.html#
profile
specific__configuration[プロファイル固有の設定]
クラスパスのルートに `logback-spring.xml`を作成し、https://docs.spring.io/spring-boot/docs/current/reference/html/howto-logging.html#howtoを利用します。 Springブートによって提供される-configure-logback-for-logging[テンプレート機能]。
以下の例では:
-
プロファイルが `dev`の場合、コンソールとローリングファイルに記録します.
-
プロファイルが `prod`の場合、ローリングファイルにのみ記録されます.
logback-spring.xml
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<include resource="org/springframework/boot/logging/logback/defaults.xml"/>
<property name="LOG__FILE" value="${LOG__FILE:-${LOG__PATH:-${LOG__TEMP:-${java.io.tmpdir:-/tmp}}/}spring.log}"/>
<springProfile name="dev">
<include resource="org/springframework/boot/logging/logback/console-appender.xml"/>
<appender name="ROLLING-FILE"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<encoder>
<pattern>${FILE__LOG__PATTERN}</pattern>
</encoder>
<file>${LOG__FILE}</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${LOG__FILE}.%d{yyyy-MM-dd}.log</fileNamePattern>
</rollingPolicy>
</appender>
<root level="ERROR">
<appender-ref ref="CONSOLE"/>
<appender-ref ref="ROLLING-FILE"/>
</root>
</springProfile>
<springProfile name="prod">
<appender name="ROLLING-FILE"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<encoder>
<pattern>${FILE__LOG__PATTERN}</pattern>
</encoder>
<file>${LOG__FILE}</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${LOG__FILE}.%d{yyyy-MM-dd}.%i.gz</fileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy
class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>10MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
</appender>
<root level="ERROR">
<appender-ref ref="ROLLING-FILE"/>
</root>
</springProfile>
</configuration>
application.yml
spring:
profiles:
active: prod
logging:
level:
ROOT: ERROR
org.springframework: ERROR
org.springframework.data: ERROR
com.mkyong: INFO
org.mongodb: ERROR
file:/Users/mkyong/application.log
web以外のアプリケーションでは、次のような出力ログファイルを上書きすることができます:
コンソール
$ java -Dlogging.file=/home/mkyong/app/logs/app.log -jar boot-app.jar
5.ルートレベルを設定する
application.properties
# root logging level, warning : too much output logging.level.=DEBUG
application.yml
logging:
level:
ROOT: DEBUG
ソースコードをダウンロードする
ダウンロードする – リンク://wp-content/uploads/2017/01/spring-boot-web-slf4j-logging.zip[spring-boot-web-slf4j-logging.zip](16 KB)
参考文献
ブート – ロギング方法]。
https://github.com/spring-projects/spring-boot/tree/master/spring-boot/src/main/resources/org/springframework/boot/logging/logback
[Spring
ブートログバックXMLテンプレート]。
http://stackoverflow.com/questions/20485059/spring-boot-how-can-i-set-the-logging-level-with-application-properties
[Spring
Boot:application.propertiesでどのようにログレベルを設定できますか?]。
logback.xmlの例