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

提供: tknotebook
移動: 案内検索
(ページの作成:「 <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-classic</artifactId> <version>1.1.7</version> </dependency...」)
 
1行: 1行:
 +
[[Category:コンピュータ]][[Category:Java]][[Category:Struts2 Tips]]
 +
[[メインページ]]&gt;[[コンピュータの部屋#Java]]&gt;[[Struts2 Tips]]
 +
 +
struts2はcommon-loggingとlog4jを使いますが、最近はロギングに slf4j + logback を利用されている方が
 +
多いと思います。
 +
 +
以下のように log4j-core を抜き その代わりに slf4j, logback, log4j-to-slf4j、log4j-api を使えばログは全て
 +
logback に送られます。以下にこれらの pom.xml の dependency の設定を示します。
  
  
16行: 24行:
 
             <version>2.6.2</version>
 
             <version>2.6.2</version>
 
         </dependency>
 
         </dependency>
 +
 +
ログの出力先や形式はクラスパス内に置いた logback.xml で決まりますが、以下はその例です。
 +
 +
<?xml version="1.0" encoding="UTF-8" ?>
 +
 +
<!--suppress ALL -->
 +
<configuration>
 +
 +
    <!--変数の定義を行います。2行目は外部のプロパティファイルの内容から定義します。-->
 +
    <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_DIR}/Trace.log</file>-->
 +
        <file>log/Trace.log</file>
 +
        <encoder>
 +
            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{80} - %msg%n</pattern>
 +
        </encoder>
 +
    </appender>
 +
 +
    <!--ログファイルをアーカイブする設定です。アーカイブは1時間毎に行います。-->
 +
    <appender name="ROLLING" class="ch.qos.logback.core.rolling.RollingFileAppender">
 +
        <!--アペンダでのレベル設定-->
 +
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
 +
            <level>INFO</level>
 +
        </filter>
 +
        <!--<file>${LOG_DIR}/Rolling.log</file>-->
 +
        <file>log/Rolling.log</file>
 +
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
 +
            <!--<fileNamePattern>${LOG_DIR}/Rolling_%d{yyyy-MM-dd_HH}.log</fileNamePattern>-->
 +
            <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>

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

メインページ>コンピュータの部屋#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 で決まりますが、以下はその例です。

<?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>