「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]] | ||
| + | [[メインページ]]>[[コンピュータの部屋#Java]]>[[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>