前陣子一直卡在這個問題
console 都將紀錄印出來了,
怎麼一直沒將 log 印到 log4j.xml 中 appender 標籤內我設定的 File 裡?
log4j.xml 負責輸出的 appender 部分:
<appender name="File" class="org.apache.log4j.DailyRollingFileAppender">
<param name="File" value="./logs/projectName.log" />
<param name="DatePattern" value="'.'yyyy-MM-dd-HH'.log'" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="[%d{yy/MM/dd HH:mm:ss}][%p][%C-%L] %m%n" />
</layout>
</appender>
又 google 了下,
整理了幾個可能造成此問題發生的要因或是解法 (小弟用的 server 是 Tomcat
1.Tomcat 有沒有權限去動 appender 中路徑的資源?
2.確認有沒有暫存檔在你的 Tomcat 資料夾中
刪掉 %CATALINA_HOME%\webapps 中的 expanded war
%CATALINA_HOME%\temp , %CATALINA_HOME%\work
這兩個資料夾裡面的內容
P.S %CATALINA_HOME% 就是你 tomcat 的根目錄
3. 確認有沒有其他的 log4j 設定檔在你的 classpath 中
因為可能會覆蓋掉本來的設定
4. 將本來 File 輸出的 路徑第一個 . 改成 ${catalina.home}
根據我總是因為 java 以及各框架的 jar 檔路徑鬼打牆數日的經驗
大膽猜測肯定是路徑出了問題
選了 4 .
直接將 File 輸出參數路徑的 value 改成:
<param name="File" value="${catalina.home}/logs/projectName.log" />
成功!
P.S
a. 2 跟 3 都檢查過了, 沒這種現象發生, 1 老實說不知道從哪裡找權限
b. 注意 param "File" 的 value 中指向的檔案我是有另外建立的,
一定時間內產生的 log 檔案 會以param "DataPattern" 中設定的格式產生
參考資料:
https://stackoverflow.com/questions/31990884/log4j-doesnt-write-logs-to-file
http://bbs.csdn.net/topics/330047225