SpringBootのログをcatalina.outに出力しない

JAVA

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>
タイトルとURLをコピーしました