パスワードを忘れた? アカウント作成
493919 journal

NightWalkerの日記: log4cxxの結末

日記 by NightWalker

Ver0.10.0でメモリリークする件は、debugビルドと組み合わせる時にのみ発生するようで、Releaseでは問題ないのでそのまま採用する事にした。
評価中なのでログを全部とるように設定していたら、日時でローリングするほうは大丈夫なのだが、項目ごとのログは膨れ上がって、ファイルサイズが55Mとか恐ろしいことに。
よく調べてみると、SizeBasedTriggeringPolicyの最後にスペースが一つ入っていたためらしい。
スペースを削ってみると、今度はlog4cxxd.dllでエラーを吐いて死んでしまった。

いろいろ調べてみると、履歴番号が入る前後に区切り文字が必要なようだ。
履歴番号は fileNamePattern で設定するファイル名の中に %i で埋め込める。やっぱり拡張子が 1とか2じゃ嫌だよねぇ~
そのファイル名パターンの指定で、app%i.log ではだめで、app.%i.log または app-%i.log といったように、前後に区切り文字が無いとローリングするタイミングで死んでしまう。せめて死ぬのは何とかしてくれ。

うまくいったサンプルのアペンダーを置いておく。
<appender name="InspFile" class="org.apache.log4j.rolling.RollingFileAppender">
 <triggeringPolicy class="org.apache.log4j.rolling.SizeBasedTriggeringPolicy">
  <param name="maxFileSize" value="1MB"/>
 </triggeringPolicy>
 <rollingPolicy class="org.apache.log4j.rolling.FixedWindowRollingPolicy">
  <param name="fileNamePattern" value="log\\app.Insp-%i.log"/>
  <param name="MinIndex" value="0"/>
  <param name="MaxIndex" value="9"/>
 </rollingPolicy>
 <layout class="org.apache.log4j.PatternLayout">
  <param name="ConversionPattern" value="%d %5p %c - %m%n"/>
 </layout>
 <param name="Append" value="true"/>
</appender>

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
typodupeerror

吾輩はリファレンスである。名前はまだ無い -- perlの中の人

読み込み中...