log4j:WARN No appenders could be found for logger


最近在趕寫高級軟件工程的大作業,老師就是厚道,一個作業居然要做完整的一個java項目,還要畫UML,這些之前都沒接觸過,只能硬着頭皮上了。不過,收獲還是蠻多的,下面是遇到的關於log4j的問題:

第一個:

log4j:WARN No appenders could be found for logger

(org.springframework.context.support.ClassPathXmlApplicationContext).

log4j:WARN Please initialize the log4j system properly.

這個是在用JUnit4做測試時遇到的,雖然不會引起什么錯,但是能解決的問題,還是不讓遺留的好。

查詢到的方法是

 

在src 目錄下創建配置文件,選擇菜單File > New > File,文件名輸入log4j.properties,文件內容如下所示:

 

log4j.rootLogger=WARN, stdout

 

log4j.appender.stdout=org.apache.log4j.ConsoleAppender

 

log4j.appender.stdout.layout=org.apache.log4j.PatternLayout

 

log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - %m%n

經過上面的操作,可以在控制台顯示錯誤的詳細信息了。

第二個:

 log4j:WARN No appenders could be found for logger (com.opensymphony.xwork2.config.providers.XmlConfigurationProvider).

 

解決方法是將Tomcat下面的其他項目全部移開,然后再重新啟動Tomcat,果然,沒有再warn。

對此,我的理解是,其他的項目中沒有添加log4j.properties文件,導致的錯誤,時間緊迫,就沒有去驗證。

 

 

PS:附錄一些查到的,感覺有用的,但是沒有用到的知識:

 當啟動eclipse中的Tomcat時,首先他會自動查找工程中用到的自身文件夾下的common/lib下的jar文件,如果找到的話,就進行加載,然后才查找conf/下的log4j.properties等相關的配置文件,正是因為這樣,才會報告沒有初始化的信息。如果在common/lib下沒有找到工程中要用到的jar文件,就先配置conf/下的配置文件,然后到工程中自身包含的lib下查找所用到的jar文件,這時就先把log4j的初始化工作作完了,所以這時在啟動Tomcat時就不再提示沒有初始化的警告信息了。總結:在配置各種運行環境的時候,不要認為將要用到的jar文件拷貝到所有的相關的lib文件夾下,就會省很多事,想當然地認為用到時會自動調用,但是當相關配置有先后順序的時候,會帶來很多不必要的麻煩以及意想不到的問題。所以要充分地了解jar文件的用途以及他應該在的位置

(來源:徐鎮源)

常用log4j配置,一般可以采用兩種方式,.properties和.xml,下面舉兩個簡單的例子: 一、log4j.properties ### 設置org.zblog域對應的級別INFO,DEBUG,WARN,ERROR和輸出地A1,A2 ## log4j.category.org.zblog=ERROR,A1 log4j.category.org.zblog=INFO,A2 log4j.appender.A1=org.apache.log4j.ConsoleAppender ### 設置輸出地A1,為ConsoleAppender(控制台) ## log4j.appender.A1.layout=org.apache.log4j.PatternLayout ### 設置A1的輸出布局格式PatterLayout,(可以靈活地指定布局模式)## log4j.appender.A1.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} [%c]-[%p] %m%n ### 配置日志輸出的格式## log4j.appender.A2=org.apache.log4j.RollingFileAppender ### 設置輸出地A2到文件(文件大小到達指定尺寸的時候產生一個新的文件)## log4j.appender.A2.File=E:/study/log4j/zhuwei.html ### 文件位置## log4j.appender.A2.MaxFileSize=500KB ### 文件大小## log4j.appender.A2.MaxBackupIndex=1 log4j.appender.A2.layout=org.apache.log4j.HTMLLayout ##指定采用html方式輸出 二、log4j.xml <?xml version="1.0" encoding="GB2312" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
<appender name="org.zblog.all" class="org.apache.log4j.RollingFileAppender">
<!-- 設置通道ID:org.zblog.all和輸出方式:org.apache.log4j.RollingFileAppender -->
    <param name="File" value="E:/study/log4j/all.output.log" /> <!-- 設置File參數:日志輸出文件名 -->
    <param name="Append" value="false" /> <!-- 設置是否在重新啟動服務時,在原有日志的基礎添加新日志 -->
    <param name="MaxBackupIndex" value="10" />
    <layout class="org.apache.log4j.PatternLayout">
        <param name="ConversionPattern" value="%p (%c:%L)- %m%n" /> <!-- 設置輸出文件項目和格式 -->
    </layout>
</appender>
<appender name="org.zblog.zcw" class="org.apache.log4j.RollingFileAppender">
    <param name="File" value="E:/study/log4j/zhuwei.output.log" />
    <param name="Append" value="true" />
    <param name="MaxFileSize" value="10240" /> <!-- 設置文件大小 -->
    <param name="MaxBackupIndex" value="10" />
    <layout class="org.apache.log4j.PatternLayout">
        <param name="ConversionPattern" value="%p (%c:%L)- %m%n" />
    </layout>
</appender>
<logger name="zcw.log"> <!-- 設置域名限制,即zcw.log域及以下的日志均輸出到下面對應的通道中 -->
    <level value="debug" /> <!-- 設置級別 -->
    <appender-ref ref="org.zblog.zcw" /> <!-- 與前面的通道id相對應 -->
</logger>
<root> <!-- 設置接收所有輸出的通道 -->
    <appender-ref ref="org.zblog.all" /> <!-- 與前面的通道id相對應 -->
</root>
</log4j:configuration> 三、配置文件加載方法: import org.apache.log4j.Logger; import org.apache.log4j.PropertyConfigurator; import org.apache.log4j.xml.DOMConfigurator; public class Log4jApp { public static void main(String[] args) { DOMConfigurator.configure("E:/study/log4j/log4j.xml");//加載.xml文件 //PropertyConfigurator.configure("E:/study/log4j/log4j.properties");//加載.properties文件
        Logger log=Logger.getLogger("org.zblog.test"); log.info("測試"); } }

(來源:sunshinegyy的專欄)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM