「Struts2で slf4j+logback を使うには」の版間の差分

提供: tknotebook
移動: 案内検索
25行: 25行:
 
         </dependency>
 
         </dependency>
  
ログの出力先や形式はクラスパス内に置いた logback.xml で決まりますが、以下はその例です。
+
ログの出力先や形式はクラスパス内に置いた logback.xml で決まりますが、以下はその例ですが、
 +
この例では全てのログを標準出力と log/Trace.log に出力します。
 +
log/Rolling.logには INFOレベル以上のログが出力され、一時間毎に Rolling-yyyy-MM-dd-hh.log
 +
にリネームされてローテーションします。最大30個、つまり最低30時間分のログを保持します。
 +
 
  
 
  <?xml version="1.0" encoding="UTF-8" ?>
 
  <?xml version="1.0" encoding="UTF-8" ?>

2016年9月24日 (土) 16:22時点における版

メインページ>コンピュータの部屋#Java>Struts2 Tips

struts2はcommon-loggingとlog4jを使いますが、最近はロギングに slf4j + logback を利用されている方が 多いと思います。

以下のように log4j-core を抜き その代わりに slf4j+logback, log4j-to-slf4j、log4j-api を使えばログは全て logback に送られます。以下にこれらの pom.xml の dependency の設定を示します。


       <dependency>
       	<groupId>ch.qos.logback</groupId>
       	<artifactId>logback-classic</artifactId>
       	<version>1.1.7</version>
       </dependency>
       <dependency>
       	<groupId>org.apache.logging.log4j</groupId>
       	<artifactId>log4j-to-slf4j</artifactId>
       	<version>2.6.2</version>
       </dependency>
       <dependency>
           <groupId>org.apache.logging.log4j</groupId>
           <artifactId>log4j-api</artifactId>
           <version>2.6.2</version>
       </dependency>

ログの出力先や形式はクラスパス内に置いた logback.xml で決まりますが、以下はその例ですが、 この例では全てのログを標準出力と log/Trace.log に出力します。 log/Rolling.logには INFOレベル以上のログが出力され、一時間毎に Rolling-yyyy-MM-dd-hh.log にリネームされてローテーションします。最大30個、つまり最低30時間分のログを保持します。


<?xml version="1.0" encoding="UTF-8" ?>

<configuration>

    <property name="LOG_DIR" value="c:/logback_logs" />

    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>TRACE</level>
        </filter>
        <target>System.out</target>
        <encoder>
            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{80} - %msg%n</pattern>
        </encoder>
        <withJasi>true</withJasi>
    </appender>

    <appender name="FILE" class="ch.qos.logback.core.FileAppender">
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>TRACE</level>
        </filter>
        <file>log/Trace.log</file>
        <encoder>
            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{80} - %msg%n</pattern>
        </encoder>
    </appender>

    <appender name="ROLLING" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>INFO</level>
        </filter>
        <file>log/Rolling.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>log/Rolling_%d{yyyy-MM-dd_HH}.log</fileNamePattern>
            <maxHistory>30</maxHistory>
        </rollingPolicy>
        <encoder>
            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{80} - %msg%n</pattern>
        </encoder>
    </appender>

    <root level="TRACE">
        <appender-ref ref="STDOUT"/>
        <appender-ref ref="FILE"/>
        <appender-ref ref="ROLLING"/>
    </root>
</configuration>