設(shè)計(jì)階段主要考慮幾個(gè)問(wèn)題
web.xml對(duì)應(yīng)位置加入如下內(nèi)容
<context-param> <param-name>log4jConfigLocation</param-name> <param-value>/WEB-INF/log4j.properties</param-value> </context-param> <context-param> <param-name>log4jRefreshInterval</param-name> <param-value>10000</param-value> </context-param> <listener> <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class> </listener>
【注意】
1. 不要把log4jConfigLocation 指定為/WEB-INF/classes/log4j.properties
當(dāng)log4jConfigLocation指定為/WEB-INF/classes/log4j.properties,如果需要?jiǎng)討B(tài)調(diào)整日志配置,可能會(huì)引起類的重新加載。但動(dòng)態(tài)調(diào)整/WEB-INF/log4j.properties不會(huì)引起類的重新加載
2. log4jRefreshInterval的單位是毫秒
3. /WEB-INF/log4j.properties和/WEB-INF/classes/log4j.properties不能同時(shí)存在,否則會(huì)報(bào)異常
4. JUnit單元測(cè)試類的問(wèn)題
運(yùn)行單元測(cè)試時(shí),報(bào)以下錯(cuò)誤
log4j:WARN No appenders could be found for logger (org.springframework.context.support.ClassPathXmlapplicationContext).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
原因是找不到默認(rèn)的log4j配置文件,可以手動(dòng)指定,如:
Log4jConfigurer.initLogging("classpath:log4j.test.properties");
log4j.test.properties是專門為執(zhí)行單元測(cè)試類使用的一個(gè)配置文件
為每個(gè)工程指定一個(gè)獨(dú)立的日志文件/WEB-INF/log4j.properties配置如下
log4j.rootLogger=info, filelog4j.appender.file=org.apache.log4j.DailyRollingFileAppenderlog4j.appender.file.File=${catalina.home}/logs/projectNamelog4j.appender.file.DatePattern='.'yyyy-MM-dd'.log'log4j.appender.file.Encoding=UTF-8log4j.appender.file.layout=org.apache.log4j.PatternLayoutlog4j.appender.file.layout.ConversionPattern=%p %d %m [%l] %n
log4j.appender.file.File=${catalina.home}/logs/projectName
中的projectName可以是工程名等唯一標(biāo)識(shí)一個(gè)工程的字符串
${catalina.home}表示當(dāng)前tomcat工程根目錄,Tomcat啟動(dòng)時(shí)設(shè)置該變量
通過(guò)以上配置,就可以達(dá)到為每個(gè)工程指定一個(gè)獨(dú)立的日志文件的目錄
小結(jié)
現(xiàn)在來(lái)解答如下幾個(gè)問(wèn)題
【問(wèn)】一個(gè)Tomcat加載多個(gè)工程,如何確定日志中的內(nèi)容是哪個(gè)工程的?
【答】為每個(gè)工程指定獨(dú)立的日志文件,避免多個(gè)工程日志文件輸出到一個(gè)文件的問(wèn)題
【問(wèn)】多個(gè)Tomcat同時(shí)加載同一個(gè)工程,可以使用log4j的DailyRollingFileAppender等文件類Appender嗎?
【答】可以,指定文件名時(shí),可以使用類似
log4j.appender.file.File=${catalina.home}/logs/projectName
的配置,這樣每個(gè)Tomcat的日志分別保存
【問(wèn)】多個(gè)Tomcat同時(shí)加載同一個(gè)工程,可以分別指定日志輸出目錄嗎?
【答】可以 同上一個(gè)問(wèn)題的答案
【問(wèn)】可以動(dòng)態(tài)調(diào)整一個(gè)類的日志級(jí)別嗎?
【答】可以 本文已經(jīng)提供了一種思路
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注