開発者ドキュメント

SpringブートSLF4Jロギングの例


spring-boot-slf4j-logging-example

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

クラスパスのルートに `logback-spring.xml`を作成し、https://docs.spring.io/spring-boot/docs/current/reference/html/howto-logging.html#howtoを利用します。 Springブートによって提供される-configure-logback-for-logging[テンプレート機能]。

以下の例では:

  1. プロファイルが `dev`の場合、コンソールとローリングファイルに記録します.

  2. プロファイルが `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)

モバイルバージョンを終了