SpringBootをwarファイルにし、Tomcat上に配置すると通常CATALINA_HOME/logs/catalina.outにもログが出力されます。これが出力されてしまうと単純に2倍のログが出力されることとなり、ディスクを圧迫するため出力を停止させます。
現行
catalina.outに出力されてしまう例
<?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}"/>
<include resource="org/springframework/boot/logging/logback/console-appender.xml" />
<include resource="org/springframework/boot/logging/logback/file-appender.xml" />
<appender name="myappAppender"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>/var/log/hoge/myapp.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>/var/log/hoge/myapp.log.%d{yyyy-MM-dd}</fileNamePattern>
</rollingPolicy>
<encoder>
<pattern>%date{yyyyMMdd HHmm} %.5level - %logger{0}.%.20method %msg%n</pattern>
</encoder>
</appender>
<root level="INFO">
<appender-ref ref="CONSOLE" />
</root>
<logger name="jp.co.hanlabo.hoge.logger.myappLogger" level="INFO">
<appender-ref ref="myappAppender" />
</logger>
</configuration>
修正
console-appenderでなくfile-appenderを使用します。これだけでcatalina.outには出力されなくるのですが、このままですと下記2ファイルに出力されてしまいます。
- var/log/hoge/spring.log・・・アプリ全体のログ
- var/log/hoge/myapp.log・・・特定の機能のログ
myapp.logだけに出力され、アプリ全体のログであるspring.logにはWARN以上のみ出力するようにThresholdFilterを使用しています。
catalina.outに出力させない例
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<include resource="org/springframework/boot/logging/logback/defaults.xml" />
<appender name="FILE" class="ch.qos.logback.core.FileAppender">
<file>/var/log/hoge/spring.log</file>
<encoder>
<pattern>${FILE_LOG_PATTERN}</pattern>
<charset>${FILE_LOG_CHARSET}</charset>
</encoder>
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>WARN</level>
</filter>
</appender>
<appender name="myappAppender"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>/var/log/hoge/myapp.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>/var/log/hoge/myapp.log.%d{yyyy-MM-dd}</fileNamePattern>
<maxHistory>0</maxHistory>
</rollingPolicy>
<encoder>
<pattern>%date{yyyy/MM/dd HH:mm:ss.SSS},%msg%n</pattern>
</encoder>
</appender>
<root level="WARN">
<appender-ref ref="FILE" />
</root>
<logger name="jp.co.hanlabo.hoge.logger.myappLogger" level="INFO">
<appender-ref ref="myappAppender" />
</logger>
</configuration>