SpringブートSLF4Jロギングの例
デフォルトでは、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の例