概要
Spotfire Serverでは、access.logやserver.logのようなログファイルが<Spotfire Serverインストールフォルダ>\tomcat\logs
配下に出力されます。
本記事では、これらのログファイルのローテーション設定について説明します。
log4j 2
Spotfire Serverにおいては、バージョン7.9より、内部で使用されるロギングライブラリが、それまでに使用されていたlog4jからlog4j 2にアップグレードされました。
その後、バージョン10.3より、アップグレード作業を容易にすることを目的に、設定ファイルlog4j2-custom.xmlが追加されました。
本記事では、Spotfire Server 10.3以降のバージョンにおける、ログローテーションの設定方法について説明します。
以降の説明では、Spotfire Serverのバージョンが10.3以降であることを前提とします。
設定ファイルとプロパティファイル
Spotfire Serverの各種ログは以下の2種類のファイルによって定義されます。
ファイル種別 | ファイル名 | 説明 |
---|---|---|
設定ファイル | log4j.xml |
各ログファイルのフォーマット等を定義 |
log4j2-ignite.xml | ||
log4j2-is.xml | ||
log4j2-tomcat.xml | ||
log4j2-tools.xml | ||
プロパティファイル | log4j2-custom.xml | サイズ上限、ローテーション数などのプロパティを定義 |
上記のXMLファイルは<Spotfire Serverインストールフォルダ>\tomcat\spotfire-config
に格納されています。
log4j2-custom.xml変更によるログローテーション設定の変更
log4j2-custom.xmlに変更をかけることにより、ログローテーション設定を変更する方法を説明します。
ここでは、access.logのローテーション設定を以下のように変更する場合の例を示します。
変更する設定値 | 変更前 | 変更後 |
---|---|---|
SizeBasedTriggeringPolicy | 10MB | 20MB |
DefaultRolloverStrategy | 9 | 14 |
lo4j2.xmlの確認
log4j2.xmlにおいて、access.logがどのように定義されているかを確認します。
該当箇所を確認すると、以下のように定義されていることがわかります。
<RollingFile name="accesslog" fileName="${basedir}/access.log"
filePattern="${basedir}/access.log.%i">
<Policies>
<SizeBasedTriggeringPolicy size="${nonServerLogsSizePolicy}"/>
</Policies>
<DefaultRolloverStrategy max="${nonServerLogsDefaultRollover}" fileIndex="min"/>
<PatternLayout pattern="${accessLogPattern}" charset="UTF-8"/>
</RollingFile>
このことから、log4j2-custom.xml
では
nonServerLogsSizePolicy
nonServerLogsDefaultRollover
の2種類のプロパティを変更する必要があることがわかります。
log4j2-custom.xmlの変更
log4j2.xmlの確認結果を踏まえ、log4j2-custom.xml
を以下のように変更します。
変更前:
<Properties>
<Property name="log.dir">logs</Property>
<Property name="serverLogSizePolicy">20MB</Property>
<Property name="serverLogDefaultRollover">39</Property>
<Property name="nonServerLogsSizePolicy">10MB</Property>
<Property name="nonServerLogsDefaultRollover">9</Property>
<Property name="tomcatLogsSizePolicy">10MB</Property>
<Property name="tomcatLogsDefaultRollover">30d</Property>
<Property name="logReconfigurationInterval">30</Property>
</Properties>
変更後:
<Properties>
<Property name="log.dir">logs</Property>
<Property name="serverLogSizePolicy">20MB</Property>
<Property name="serverLogDefaultRollover">39</Property>
<Property name="nonServerLogsSizePolicy">20MB</Property>
<Property name="nonServerLogsDefaultRollover">14</Property>
<Property name="tomcatLogsSizePolicy">10MB</Property>
<Property name="tomcatLogsDefaultRollover">30d</Property>
<Property name="logReconfigurationInterval">30</Property>
</Properties>
Spotfire Serverサービスの再起動
log4j2-custom.xmlへの変更を有効化するために、Spotfire Serverサービスを再起動します。
注意事項
上記の例では、log4j2-custom.xml内のnonServerLogsSizePolicyプロパティとnonServerLogsDefaultRolloverプロパティを変更しましたが、これにより、同じプロパティを参照する他のログファイル(例:startup.log、sql.log)のローテーション設定も変更されることにご注意ください。
log4j2.xml変更によるログローテーション設定の変更
特定のログファイル(例:access.logのみ)に限定してローテーション設定を変更したい場合や、ログローテーションをファイルサイズベースから日次に変更したい場合など、log4j2-custom.xml変更によるログローテーション設定の変更の方法では対応できない場合には、log4j2.xmlに変更をかけることで対応できます。
例1:access.logのみ個別でローテーション設定を変更する場合
変更前:
<RollingFile name="accesslog" fileName="${basedir}/access.log"
filePattern="${basedir}/access.log.%i">
<Policies>
<SizeBasedTriggeringPolicy size="${nonServerLogsSizePolicy}"/>
</Policies>
<DefaultRolloverStrategy max="${nonServerLogsDefaultRollover}" fileIndex="min"/>
<PatternLayout pattern="${accessLogPattern}" charset="UTF-8"/>
</RollingFile>
変更後:
<RollingFile name="accesslog" fileName="${basedir}/access.log"
filePattern="${basedir}/access.log.%i">
<Policies>
<SizeBasedTriggeringPolicy size="20MB"/>
</Policies>
<DefaultRolloverStrategy max="14" fileIndex="min"/>
<PatternLayout pattern="${accessLogPattern}" charset="UTF-8"/>
</RollingFile>
例2:server.logのローテーションをファイルサイズベースから日次に変更する場合
変更前:
<RollingFile name="accesslog" fileName="${basedir}/server.log"
filePattern="${basedir}/server.log.%i">
<Policies>
<SizeBasedTriggeringPolicy size="${ServerLogsSizePolicy}"/>
</Policies>
<DefaultRolloverStrategy max="${serverLogDefaultRollover}" fileIndex="min"/>
<PatternLayout pattern="${standardLogPattern}"/>
</RollingFile>
変更後:
<RollingFile name="accesslog" fileName="${basedir}/server.log"
filePattern="${basedir}/server.%d{yyyy-MM-dd}.log">
<Policies>
<SizeBasedTriggeringPolicy interval="1" modulate="true"/>
</Policies>
<DefaultRolloverStrategy max="${serverLogDefaultRollover}" fileIndex="min"/>
<PatternLayout pattern="${standardLogPattern}"/>
</RollingFile>
出典:"log4j2.xml" RollingFileAppender settings to customize TIBCO Spotfire Server logs
注意事項
log4j2.xmlへの変更は、Spotfire Serverアップグレード時にupgradetoolを利用しても、は移行元バージョンから移行先バージョンへ引き継がれません。
log4j2-custom.xmlへの変更は引き継がれます。