- PR -

log4jで日毎にローテーションされない

1
投稿者投稿内容
rviper
常連さん
会議室デビュー日: 2004/06/15
投稿数: 34
投稿日時: 2005-03-01 16:35
お世話になっております。

log4jを使用してでDailyRollingFileAppenderで日毎にローテーションを行う設定と
サイズでローテーションを行う設定の2つの設定でログを出力しているのですが、
サイズによるローテーションは問題ないのですが、DailyRollingFileAppenderで
設定を行っているログが日毎にローテーションされないという問題が発生しております。
過去スレを検索してみましたが、log4j.jarの位置云々で治ったという話が出ていたので
移動してみましたが、直りませんでした。

環境は以下の通りです。
サーバ:HP-UX
WEBサーバ等:Zeus4.2r4+WebLogic6.1SP2

以下log4j.propertiesの設定内容

log4j.rootCategory=INFO, stdout, DebugLog, R

log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d [%c{2}] %-5p - %m%n

log4j.appender.DebugLog=org.apache.log4j.RollingFileAppender
log4j.appender.DebugLog.File=/tmp/debug.log
log4j.appender.DebugLog.MaxFileSize=10MB
log4j.appender.DebugLog.MaxBackupIndex=3
log4j.appender.DebugLog.layout=org.apache.log4j.PatternLayout
log4j.appender.DebugLog.layout.ConversionPattern=%d [%c{2}] %-5p - %m%n

log4j.appender.R=org.apache.log4j.DailyRollingFileAppender
log4j.appender.R.File=/home/app/log/aplog/aplog.log
log4j.appender.R.DatePattern='.'yyyyMMdd
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%d [%c{2}] %-5p - %m%n
log4j.appender.R.threshold=INFO

何かご存知の方がいらっしゃいましたら宜しくお願いします。
yos
常連さん
会議室デビュー日: 2004/08/24
投稿数: 27
投稿日時: 2005-03-02 13:27
DailyRollingFileAppender の挙動は、
1. 指定のログ・ファイル(logfile)にログを書こうとして、「以
前にログを書いたとき」より日付(など)が進んでいるかどうか
をチェック。
2. 日付(など)が進んでいたら、ログ・ファイルを日付フォーマッ
ト付きファイル(logfile.yyyy-MM-dd)に退避。
3. 指定のログ・ファイル(logfile)にログを出力。
というものです。

VM が起動された直後には、1. で「以前ログを書いたとき」があ
りませんので、常に logfile にログを出力します。

つまり、アプリケーションが動作している「最中」に日付が変わ
らない限り、期待通りの動作はしてくれないわけです。
rviper
常連さん
会議室デビュー日: 2004/06/15
投稿数: 34
投稿日時: 2005-03-04 10:13
yos様 返信ありがとうございます。

原因は分かりました。
次の日に日付が変わったときに出力されたログをみると
cronで実行しているjavaプログラムがログを出力していたので、
シェルの内容を確認したところ・・・
古いlog4jのjarを使用していました。
それを新しいものに変更したところ無事ローテーションされました。

>VM が起動された直後には、1. で「以前ログを書いたとき」があ
>りませんので、常に logfile にログを出力します。
>
>つまり、アプリケーションが動作している「最中」に日付が変わ
>らない限り、期待通りの動作はしてくれないわけです。

これですが、アプリケーションが停止している状態で、
前日のログがあるのを確認してから起動->ログ出力を
行ったら普通にローテーションするのですが・・・
私も最初は以前のログを書いたときが無ければローテーションされないと
思っていましたが、そうではないようです。
1

スキルアップ/キャリアアップ(JOB@IT)