我有一個在Tomcat下運行的Web應用程序。作爲Windows服務運行時的Tomcat日誌記錄
使用java.util.logging實現各種功能的記錄。
當通過的startup.bat創建日誌文件,並記錄日誌如預期運行Tomcat。
當使用相同的war文件作爲windows服務運行時,日誌的輸出實際上不存在。 stdout.log和stderr.log中有一些(幾乎沒有)日誌輸出,但不是預期的結果。
這聽起來對任何人都很熟悉嗎?你採取了哪些措施來糾正它?
問候
我有一個在Tomcat下運行的Web應用程序。作爲Windows服務運行時的Tomcat日誌記錄
使用java.util.logging實現各種功能的記錄。
當通過的startup.bat創建日誌文件,並記錄日誌如預期運行Tomcat。
當使用相同的war文件作爲windows服務運行時,日誌的輸出實際上不存在。 stdout.log和stderr.log中有一些(幾乎沒有)日誌輸出,但不是預期的結果。
這聽起來對任何人都很熟悉嗎?你採取了哪些措施來糾正它?
問候
事實證明,這是一個配置問題。
當從Tomcat的的startup.bat開始將引用logging.properties conf目錄。
當作爲服務的JDK/JRE/lib目錄logging.properties進場開始。
當作爲Windows服務運行時,所有控制檯輸出重定向在Tomcat日誌目錄stdout.log。
試圖捕捉自定義文件記錄定製logging.properties文件,至今未能。
-1爲參數啓動,當「作爲服務啓動時,jdk/jre/lib logging.properties發揮作用」。將Tomcat作爲Windows Service運行時,使用「Monitor Tomcat」應用程序來配置日誌記錄。 – kgiannakakis 2009-10-07 09:49:18
那麼有沒有辦法配置日誌記錄使用log4j呢? – 2017-01-23 13:04:04
輸出和錯誤日誌文件應該在Tomcat的安裝日誌目錄已創建。
要配置日誌記錄,請使用「配置Tomcat」應用程序。您可以在此設置錯誤級別和日誌文件的位置。
確保Tomcat環境在兩種情況下都是相同的。檢查Tomcat服務編輯器中的路徑和設置。不要使用標準Windows屬性對話框進行服務,而是使用//ES//name
啓動tomcat.exe,其中name
是服務的名稱。
當tomcat作爲服務啓動時,其默認日誌配置實際上會覆蓋任何特定於應用程序的日誌配置。正如Aaron建議設置配置的最佳方式是使用tomcatw // ES // tomcat_service_name,例如tomcat_service_name可以是Tomcat5,具體取決於您的安裝首選項(也可以使用tomcatw,而不是tomcat - 這兩個可執行文件都可以在C:\ Program Files \ Apache Software Foundation \ Tomcat 5.0 \ bin中找到)。此post解釋瞭如何確保您使用正確的服務名稱(如果對話框中沒有值,則名稱可能不正確)。
我會發布圖片,但我沒有足夠的代表。在Java VM選項卡上,在Java選項中輸入配置,例如-Dlog4j.configuration = service.log4j.properties
包含您的記錄配置文件可以被放置在Tomcat服務器類目錄,例如C:\ Program Files \ Apache Software Foundation \ Tomcat 5.0 \ server \ classes。
有幾個地方可以放置日誌配置文件。我最初嘗試指定日誌配置文件的完整路徑,但log4j似乎只檢查某些路徑。正如post所述,將-Dlog4j.debug作爲Java選項的第一行,您可以調試log4j正在做什麼。服務器類目錄被列爲一個可能的搜索路徑。
創建log4j.properties文件時,將其命名爲log4j.properties以外的內容,例如, service.log4j.properties。命名它log4j.properties存在一個風險,即可以找到一個特定於應用程序的log4j.properties文件,這個文件可以覆蓋你的配置,但是隨後會被tomcat服務忽略。
檢查服務的屬性 - 運行Windows啓動Tomcat的命令是什麼? – 2009-10-02 18:16:21
服務開始調用org.apache.catalina.startup.Bootstrap,參數以JVM模式 – FacilityDerek 2009-10-07 09:35:53