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(ES6),Java,AWSの大体のリソースです
コメントはやさしくお願いいたします^^
座右の銘は、「狭き門より入れ」「願わくは、我に七難八苦を与えたまえ」です^^
コメント