2011-10-02 110 views
4

我最近接管一個使用在AIX下運行的websphere和log4j的Web應用程序項目。爲了創建一個開發環境,我在windows中設置所有組件,使用eclipse編譯WAR文件並部署它。Websphere中的Log4j

除日誌文件未創建外,所有工作都正常。 我改變了從以類似log4j.properties日誌文件在下面,並和大家給予完全訪問權限的目錄:

log4j.appender.F1.File=/abc/def/logs/admin.log 

log4j.appender.F1.File=c:/logs/admin.log 

我還能檢查?

我創建了一個簡單的獨立testapp,它使用相同的log4j.properties,它可以創建日誌文件,但是當部署到websphere的servlet不起作用時。請幫忙!謝謝!

+0

您是否已經在WAR文件的WEB-INF/classes中放置了log4j.properties?您是否在文件系統的另一個位置查找admin.log? stdout或stderr日誌(我不知道這些在CE中)顯示任何與log4j相關的錯誤?你在做什麼應該工作,所以我猜測log4j.properties文件沒有被使用。 – dbreaux

+0

是的,log4j。屬性位於WAR文件的WEB-INF/classes內部。我猜log4j.properties是好的,因爲我改變了輸出模式,並且它可以用於控制檯輸出。 – John

+0

log4j.properties在裏面,但不知何故它不被log4j讀取。我強制該代碼並正在工作,但如何使tomcat使用WEB-INF/classess中的一個而不使用硬編碼?代碼:PropertyConfigurator.configure(「C:\\ test \\ log4j.properties」); – John

回答

4

好的,我認爲this article應該可以幫到你。看來WebSphere CE默認使用log4j,並使用全局屬性文件進行控制。有一節介紹如何使用特定於應用程序的屬性文件。

+0

感謝dbreaux,輝煌!正是這個問題!真的很難讓新手知道所有這些,現在轉向學習如何制定部署計劃,感嘆! – John

0

我建議你使用環境變量在服務器上設置這樣的:

必須訪問您的服務器的管理控制檯。 在自定義屬性

的server_path =/ABC/DEF /日誌

在你的log4j,使用:{$}的server_path /log.txt

確保運行應用程序的用戶有更好的機會獲得目錄。

+0

感謝您的回覆。我對websphere完全陌生,設置env的正確方法是什麼,我通過整個管理控制檯閱讀,但沒有發現任何內容?我嘗試的最佳猜測是在C:\ Program Files \ IBM \ WebSphere \ AppServerCommunityEdition \ bin中設置env var,並按照建議更改log4j,但它也不起作用。 – John

+0

變量的設置在服務器 - 進程定義 - 自定義屬性下完成 –

+0

我沒有在服務器下獲得「進程定義」,只有信息,\t \t Java系統信息,服務器日誌,關閉,Web服務器,線程池等。我在Windows中使用Community Edition,控制檯位於http:// localhost:8080/ – John

1

以下是我嘗試解決類似問題的方法。

  1. 打開log4j調試以查看它實際從何處拾取文件。您需要獲取哪個文件的證據(因此打開調試是一項有價值的活動)這爲您提供了有關log4j試圖執行什麼操作來查找配置文件的信息。

    -Dlog4j.debug =真

  2. 我不會硬編碼在代碼log4j的位置。相反,我 將使用log4j.configuration系統屬性並在 中聲明JVM參數。這樣即使我不需要碰我的代碼。

    -Dlog4j.configuration =文件:///home/manglu/log4j.properties

我會不管用,我使用的運行服務器的這種做法(無論是Tomcat或WAS CE或WAS )

希望這會有所幫助

+0

感謝Manglu,在那裏指定那個開關?對不起我的新手問題! – John

+0

在jvm參數中。-D會將該文件的引用提供給log4j。參見設置jvm args in谷歌爲您正在使用的服務 –

+0

我在我的應用程序中使用anove方法 我可以提供自定義屬性,而不是JVM參數中的文件位置正在使用websphere 6.1 –