ログファイルの出力/ローテート設定(log4j2)



log4jの脆弱性が世間を賑わしまして、GeneXusでも対応方法がいくつか出ておりました


GeneXus日本語SAC

log4j ライブラリに関連する脆弱性(CVE-2021-44228)について

https://sac.genexus.jp/viewtr_saclist.aspx?50554,


それはそれとしてシステムの運用においてログを正しく出力することは必要です。

GeneXusでもlog4jの機能が組み込まれており、デフォルトでログファイルへの出力が可能となっています。


Log 外部オブジェクト

http://wiki.genexus.jp/hwiki.aspx?Log+%E5%A4%96%E9%83%A8%E3%82%AA%E3%83%96%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88



ログファイルの出力場所/ローテートの設定などはlog4j2.xmlに記載されています。

Tomcatの場合だと

C:\Program Files\Apache Software Foundation\Tomcat 8.5\webapps\XXXXX\WEB-INF\classes\log4j2.xml


GeneXusのナレッジベースプロパティから調整できる値はこちら


それ以外の設定内容は直接log4j2.xmlに設定する形となります。

細かい設定はlog4j2のドキュメントなどを参照して設定頂ければ良いと思いますので、

基本的な部分と注意点だけ記載します。



①デフォルトだとTomcatの場合は以下に出力されます

C:\Program Files\Apache Software Foundation\Tomcat 8.5\webapps\XXXXX\logs\client.log

ローテートされたバックアップファイルの方は

C:\Program Files\Apache Software Foundation\Tomcat 8.5\webapps\XXXXX\logs\old\

の配下に.gzの形で保存されます。




②ログの出力場所とファイル名については

GeneXusのナレッジベースプロパティから設定できますが、それだと以下のような形になります。


  <Property name="logPath">${main:0}${LS}logs${LS}</Property>

  <Property name="logFilePath">C:\Program Files\Apache Software Foundation\Tomcat 8.5\logs\SYSTEM_XXXXX.log</Property>


  <RollingFile name="RollingFile" fileName="${logFilePath}" filePattern="${logPath}old${LS}app-%d{yyyy-MM-dd-HH}-%i.log.gz">


これだとログファイル自体は設定したとおりになるのですが、

ローテートした結果のバックアップファイルが結局デフォルトの場所に出力されてしまうことになります。

※filePatternの部分




③出力場所を変更したい場合は上記②のことがあるのでlog4j2.xmlを直接変更する形で対応します。

が、そうするとローカルPCからビルドした場合は、デフォルトのlog4j2.xmlに戻ってしまいます。。。


なので、検証環境/本番環境といった実際の稼働環境のlog4j2.xmlを調整するのが良いでしょう。




④ローテートについて、デフォルトだと1時間ごとの10MBごとにローテートされます。

かなり細かく分かれて見づらくなりますので、個人的には1日1ログファイルが良いかと思います。


その場合の設定方法はこちら

    <RollingFile name="RollingFile" fileName="${logFilePath}" filePattern="${logPath}old${LS}app-%d{yyyy-MM-dd-HH}-%i.log.gz">

    ↓↓↓

    <RollingFile name="RollingFile" fileName="${logFilePath}" filePattern="${logPath}old${LS}app-%d{yyyy-MM-dd}-%i.log.gz">


    <TimeBasedTriggeringPolicy />

    <SizeBasedTriggeringPolicy size="10 MB"/>

    ↓↓↓

    <TimeBasedTriggeringPolicy />


コメント

このブログの人気の投稿

Tomcatの設定3:8080ポート以外で動作させる

Tomcatの設定1:データソースを使用する方法とメリット

Tomcatの設定2:アクセスログの活用

Tomcatの設定5:メモリ調整と起動モード

IVS文字・サロゲートペア文字の注意

Tomcatで画面表示の速度改善