- PR -

Log4Jで、複数のFileAppenderに同一ファイルを指定する場合

1
投稿者投稿内容
finch
常連さん
会議室デビュー日: 2006/09/29
投稿数: 26
投稿日時: 2008-10-31 13:38
Log4J設定ファイルですが、以下のように、複数のFileAppenderに同一ファイルを指定する場合に関してです。

コード:
	<appender name="xxxLOG" class="org.apache.log4j.DailyRollingFileAppender">
 		<param name="threshold" value="debug" />
		<param name="File" value="/xxx/information.log" />
	</appender>

	<appender name="yyyLOG" class="org.apache.log4j.DailyRollingFileAppender">
 		<param name="threshold" value="info" />
		<param name="File" value="/xxx/information.log" />
	</appender>

	<category name="xxx">
		<level value="debug" />
	    	<appender-ref ref="xxxLOG" />
	</category>

	<root>
    		<level value="info" />
	    	<appender-ref ref="yyyLOG" />
	</root>




このような場合、ファイルのrenameエラーとか、出力が混じりあうなどといった不都合が発生しないか、懸念しておりますが、ご存知の方がいらっしゃいましたら、ご教授お願い致します。
わたなべ
大ベテラン
会議室デビュー日: 2007/12/09
投稿数: 123
お住まい・勤務地: 札幌
投稿日時: 2008-10-31 14:50
>複数のFileAppenderに同一ファイルを指定する
指定しちゃいけないと思います。
finch
常連さん
会議室デビュー日: 2006/09/29
投稿数: 26
投稿日時: 2008-10-31 15:13
回答ありがとうございます。

>指定しちゃいけないと思います。

常識的にそうかと考えましたが、実際これで不都合が発生するかどうか、ご存知の方がいらっしゃれば、と思いまして、投稿させて頂いた次第です。
flatline
大ベテラン
会議室デビュー日: 2005/09/22
投稿数: 102
投稿日時: 2008-11-04 19:37
複数のFileAppender というわけではありませんが、
同じPC(サーバ) に、2つのtomcat を稼働して、同一のアプリケーションを配置、
全く同一のlog4j.xml で、特に問題もなく動いています。
ログのローテートも失敗したことがないです。

ひょっとすると、全く同じタイミングでローテートを行おうとするとエラーに
なったりするのかもしれませんが。
ひろ@ya
大ベテラン
会議室デビュー日: 2006/02/23
投稿数: 168
投稿日時: 2008-11-04 19:54
Windows + JDK1.4+ DailyRollingFileAppender
の場合、複数のlog4jインスタンスが同じログファイルに出力するよう
なっていると、最悪の場合ローテートの際にファイルが失われます。

http://d.hatena.ne.jp/t_yano/20061110/1163180541

などを参考にどうぞ


[ メッセージ編集済み 編集者: ひろ@ya 編集日時 2008-11-06 08:45 ]

[ メッセージ編集済み 編集者: ひろ@ya 編集日時 2008-12-02 13:50 ]
deanna
大ベテラン
会議室デビュー日: 2004/08/23
投稿数: 118
投稿日時: 2008-11-05 23:24
引用:

finchさんの書き込み (2008-10-31 15:13) より:
回答ありがとうございます。

>指定しちゃいけないと思います。

常識的にそうかと考えましたが、実際これで不都合が発生するかどうか、ご存知の方がいらっしゃれば、と思いまして、投稿させて頂いた次第です。



ここで「不都合がない」と回答されたからと言って、決して不都合が発生しないと言う保証ではありません。そのリスクを担保するのはあなた自身ですから。
finch
常連さん
会議室デビュー日: 2006/09/29
投稿数: 26
投稿日時: 2008-11-06 15:47
flatlineさん,ひろ@yaさん,deannaさん、返信ありがとうございます。
この会議室の「複数のWebアプリから同一ファイルにLog4J出力」という投稿にもからむのですが、以下のようになるのではないかと、推測致しました。

・Win+J2SE1.4において、複数のログ処理オブジェクトが同一ファイルに出力する場合、リネームエラーが起き、ファイルがロストされる。
(他の環境においては、これは発生しない)

ただ、他の環境で、問題が無いという保証は、現状無いと認識しております。
1

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