Spring Bootでlogback.xmlを使用してログローテートする(Tomcat)
Spring Bootのapplication.ymlで簡易なlog出力の設定が出来ますが、logback.xmlにログ出力情報を記載すればtomcatのwarアプリでログ出力やログローテート、環境ごとに出力内容を設定することが出来ます。
logback.xml → logback-spring.xml
Springではlogback.xmlではなく、logback-spring.xmlにするのが推奨されているようです。
配置場所
src/main/resources/配下にlogback-spring.xmlを配置します。
logback-spring.xmlで日単位でログローテート
logback-spring.xmlで日単位でログローテートします。
logback-spring.xml
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<include resource="org/springframework/boot/logging/logback/defaults.xml"/>
<include resource="org/springframework/boot/logging/logback/console-appender.xml"/>
<timestamp key="LOG_DATE" datePattern="yyyyMMdd"/>
<property name="LOG_FILE" value="/opt/tomcat/logs/application.log" />
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<encoder>
<pattern>${FILE_LOG_PATTERN}</pattern>
</encoder>
<file>${LOG_FILE}</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${LOG_FILE}.%d</fileNamePattern>
<maxHistory>7</maxHistory>
</rollingPolicy>
</appender>
<springProfile name="local"> <!-- application-local.ymlはコンソール表示する -->
<root level="INFO">
<appender-ref ref="CONSOLE"/>
</root>
</springProfile>
<springProfile name="dev,test,prod"> <!--application-dev.ymlなどはファイル出力する -->
<root level="INFO">
<appender-ref ref="FILE"/>
</root>
</springProfile>
</configuration>
fileNamePatternで指定した日付によってログローテートの単位は決まります。
| 単位 | 変数 | 備考 |
|---|---|---|
| 日 | %d | |
| 月 | %d{yyyyMMdd} | 未確認 |
| 時 | %d{yyyyMMddHH} | |
| 分 | %d{yyyyMMddHHmm} | |
| 週 | %d{yyyyww} | 未確認 |
これでapplication.logにログ出力されるようになります。但し、Tomcatのcatalina.outにも出力はされるので肥大化していってしまいます。
springProfileタグ
springProfileタグを使用すれば各環境ごとの設定ができるので便利です。
name属性にprofile(dev,test,prodなど)を指定してあげればOKです。
Tomcatでのログ出力先
Tomcatでのログ出力先はlogback-spring.xmlの<property name=”LOG_FILE” value=”/opt/tomcat/logs/application.log” />に記載しています。
/opt/tomcat/logs/配下にapplication.logが作成されます。このファイルが指定した単位でローテートされます。
ログ出力先にJPAのSQLを出力したいときはapplication.ymlに以下記述の追記が必要です。
spring:
jpa:
database-platform: org.hibernate.dialect.PostgreSQLDialect
show-sql: true
properties:
hibernate:
format__sql: true
# 以下追記
logging:
level:
org:
hibernate:
SQL: DEBUG
type:
descriptor:
sql:
BasicBinder: TRACE

KHI入社して退社。今はCONFRAGEで正社員です。関西で140-170/80~120万から受け付けております^^
得意技はJS(ES20xx),Java,AWSの大体のリソースです
コメントはやさしくお願いいたします^^
座右の銘は、「狭き門より入れ」「願わくは、我に七難八苦を与えたまえ」です^^

コメント