log4j不輸出日志錯誤分析


1.rootLogger不輸出

  代碼如下:

 

配置文件代碼:

log4j.rootLogger=info, R,userLog

log4j.appender.R=org.apache.log4j.RollingFileAppender

log4j.appender.R.File=E:/createHtml.log

log4j.appender.R.MaxFileSize=100MB

log4j.appender.R.MaxBackupIndex=20

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

log4j.appender.R.layout.ConversionPattern=%-d{yyyy-MM-dd HH\:mm\:ss} [%p] %c - %m%n

 

log4j.appender.userLog=org.apache.log4j.ConsoleAppender

log4j.appender.userLog.Target=System.out

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

log4j.appender.userLog.layout.ConversionPattern=%m%n

 

類中代碼:

private final static Log log = LogFactory.getLog("userInfoLog");

log.debug(“輸出日志====”);

 

錯誤:設置好的日志,文件中沒有輸出,控制台也沒有輸出

原因:level級別問題;配置文件中設置的級別是info;而在類中輸出使用的是debuglog4jlevel級別為:debugàinfoàwarnàerror

解決:配置級別高,輸出級別低則不會輸出,如果反過來就會輸出;比如:配置文件改為debug,輸出使用log.debug或者log.info或者更高級別都可以。

 

2.自定義的日志不輸出

  代碼如下:

配置文件代碼:

log4j.appender.createExcel=info,excel

log4j.appender.excel=org.apache.log4j.FileAppender

log4j.appender.excel.File=E:/createExcel.log

log4j.appender.excel.Append=true

log4j.appender.excel.Threshold=info

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

log4j.appender.excel.layout.ConversionPattern=%m%n

log4j.additivity.createExcel = false

 

類中代碼:

private final static Log log = LogFactory.getLog("createExcel ");

log.debug(“輸出日志====”);

 

   錯誤:使用自定義的名稱createExcel不輸出日志

   原因:配置文件中的紅色代碼處有錯誤,這種錯誤很容易在配置文件中有很多日志文件的時候,復制上面的出錯;

   解決:log4j.logger.createExcel=info,excelLogger:負責供客戶端代碼調用,執行debuginfo等方法。 Appender:負責日志的輸出,Log4j已經實現了多種不同目標的輸出方式,可以向文件輸出日志、向控制台輸出日志、向Socket輸出日志等。紅色部分錯誤的將logger寫成了appender;新添加一個自定義的日志的時候必須要是有log4j.logger類。

   擴展:自定義日志的時候還容易出錯的地方是:你配置文件中使用自定義名稱與類中使用的不一致,這里配置文件中的log4j. appender.createExcel要與類中LogFactory.getLog("createExcel ");一致,否則也會導致不輸出日志。

 

3. 自定義日志使用類名不輸出

   代碼如下:

配置文件代碼:

    log4j.logger.performanceLogger=INFO,performanceLogger

       log4j.appender.performanceLogger=org.apache.log4j.DailyRollingFileAppender             log4j.appender.performanceLogger.File=/application/resinlog/cmslog/common-perf.log

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

log4j.appender.excel.layout.ConversionPattern=%m%n

log4j.additivity.createExcel = false

 

類中代碼:

         private final static Log log = LogFactory.getLog (PerformanceMonitorFilter.class);

    log.debug(“輸出日志====”);

 

錯誤:指定的日志文件中沒有輸出日志,也沒有報錯

原因:配置文件中使用了自定義名稱的方式,但是類中調用日志文件的時候卻使用的類名

解決:如果類是個jar包,不容許修改的,那么就把配置文件改了;具體如下:        log4j.logger.com.hudong.keel.web.filter.PerformanceMonitorFilter=INFO,performanceLogger     

log4j.appender.performanceLogger=org.apache.log4j.DailyRollingFileAppender

 如果類可以改,那也可以不改配置文件直接該類,如下:

   private final static Log log = LogFactory.getLog (“performanceLogger”);

      擴展:如果你不想在rootLogger指定的文件下輸出內容,只想在你知道的自定義文件下輸出你的日志,那么你可以把輸出開關改為false,默認的是true;如果你不該那么就會在跟日志和你自定義的日志都輸出日志;開關如下:

 log4j.additivity.createExcel = false

 

4.如果配置好文件之后再控制台輸出一些紅色警告,那么證明你配置的log4j文件有錯誤;檢查一下你的配置文件,具體配置文件的使用間博客其他有關log4j使用的文章。

 


免責聲明!

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



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