我有一個web應用程序,它在啓動時將服務器本地時區存儲在全局靜態成員中,然後將JVM的DefaultTimeZone設置爲GMT。帶時區的log4j問題
在啓動過程中,log4j將在服務器默認時區中記錄消息。
現在,當我在log4j.properties中更改日誌級別時,日誌級別會動態更改,現在log4j以GMT時間記錄消息。
我的要求是記錄郵件始終在服務器本地時區。
我如何在我的情況下實現這一目標?任何指針將非常感激。
謝謝
我有一個web應用程序,它在啓動時將服務器本地時區存儲在全局靜態成員中,然後將JVM的DefaultTimeZone設置爲GMT。帶時區的log4j問題
在啓動過程中,log4j將在服務器默認時區中記錄消息。
現在,當我在log4j.properties中更改日誌級別時,日誌級別會動態更改,現在log4j以GMT時間記錄消息。
我的要求是記錄郵件始終在服務器本地時區。
我如何在我的情況下實現這一目標?任何指針將非常感激。
謝謝
現在,當我改變log4j.properties我的日誌級別的日誌級別是動態變化的
這意味着你已經配置的log4j觀看更改您的配置文件,一個配置,它not recommended for webapps (另請參閱this related SO question)。
什麼正在發生是這樣的
TimeZone.getDefault()
返回機器的時區我會建議一個fe -W選項的位置:
TimeZone getMyAppDefaultTimeZone()
。更改僅適用於您的應用程序代碼需要的JVM範圍的默認值可能會導致更大的意外後果。
獲取您正在使用log4j的版本的源代碼和調查使用的是找到產生你看到的時間戳,其中追加程序。然後找出您需要在該位置實際完成的代碼,然後更新您的問題。
如果您使用的是log4cxx 0.9.7則默認時區爲GMT。獲取服務器的時區,並添加以下行配置打印日誌在香港時區(格林尼治標準時間+8:00)
log4j.appender.R.layout.TimeZone=GMT-8:00
聖潔的牛,然後我在這裏是完整的反模式。 – jch 2010-07-11 07:32:53