1.rootLogger不輸出web
代碼以下:apache
配置文件代碼:app
log4j.rootLogger=info, R,userLogspa
log4j.appender.R=org.apache.log4j.RollingFileAppenderdebug
log4j.appender.R.File=E:/createHtml.log日誌
log4j.appender.R.MaxFileSize=100MBexcel
log4j.appender.R.MaxBackupIndex=20orm
log4j.appender.R.layout=org.apache.log4j.PatternLayoutget
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;而在類中輸出使用的是debug;log4j的level級別爲: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,excel;Logger:負責供客戶端代碼調用,執行debug、info等方法。 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使用的文章。