log4j:WARN No appenders could be found for logger 解決方案
阿新 • • 發佈:2019-02-10
我們在使用Log4j的時候,總是出現:
Java程式碼
這個問題是因為我們的log4j.properties檔案配置不夠完整,所以我們給它配置齊了就不會再出現這個問題。
log4j.properties不完整配置如下:
Java程式碼
完整配置如下:
Java程式碼
再次執行你的程式,你會發現Log4j的警告消失了。不過發現以前的Log4j控制檯資訊也沒有了,其實只要把上面詳細配置的log4j.rootLogger=CONSOLE,FILE改為log4j.rootLogger=DEBUG,CONSOLE,FILE,你就發現,控制檯資訊又回來了。
Java程式碼
Java程式碼
- log4j:WARN No appenders could be found for logger (org.apache.ibatis.logging.LogFactory).
- log4j:WARN Please initialize the log4j system properly.
這個問題是因為我們的log4j.properties檔案配置不夠完整,所以我們給它配置齊了就不會再出現這個問題。
log4j.properties不完整配置如下:
Java程式碼
- log4j.rootLogger=DEBUG, stdout
- log4j.appender.stdout=org.apache.log4j.ConsoleAppender
- log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
- log4j.appender.stdout.layout.ConversionPattern=%c{1} - %m%n
- log4j.logger.java.sql.PreparedStatement=DEBUG
完整配置如下:
Java程式碼
- log4j.rootLogger=CONSOLE,FILE
- log4j.addivity.org.apache=true
- # 應用於控制檯
- log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
- log4j.appender.CONSOLE.Threshold=INFO
- log4j.appender.CONSOLE.Target=System.out
- log4j.appender.CONSOLE.Encoding=GBK
- log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
- log4j.appender.CONSOLE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n
- # 每天新建日誌
- log4j.appender.A1=org.apache.log4j.DailyRollingFileAppender
- log4j.appender.A1.File=C:/log4j/log
- log4j.appender.A1.Encoding=GBK
- log4j.appender.A1.Threshold=DEBUG
- log4j.appender.A1.DatePattern='.'yyyy-MM-dd
- log4j.appender.A1.layout=org.apache.log4j.PatternLayout
- log4j.appender.A1.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L : %m%n
- #應用於檔案
- log4j.appender.FILE=org.apache.log4j.FileAppender
- log4j.appender.FILE.File=C:/log4j/file.log
- log4j.appender.FILE.Append=false
- log4j.appender.FILE.Encoding=GBK
- log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
- log4j.appender.FILE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n
- # 應用於檔案回滾
- log4j.appender.ROLLING_FILE=org.apache.log4j.RollingFileAppender
- log4j.appender.ROLLING_FILE.Threshold=ERROR
- log4j.appender.ROLLING_FILE.File=rolling.log
- log4j.appender.ROLLING_FILE.Append=true
- log4j.appender.CONSOLE_FILE.Encoding=GBK
- log4j.appender.ROLLING_FILE.MaxFileSize=10KB
- log4j.appender.ROLLING_FILE.MaxBackupIndex=1
- log4j.appender.ROLLING_FILE.layout=org.apache.log4j.PatternLayout
- log4j.appender.ROLLING_FILE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n
- #自定義Appender
- log4j.appender.im = net.cybercorlin.util.logger.appender.IMAppender
- log4j.appender.im.host = mail.cybercorlin.net
- log4j.appender.im.username = username
- log4j.appender.im.password = password
- log4j.appender.im.recipient = yyflyons@163.com
- log4j.appender.im.layout=org.apache.log4j.PatternLayout
- log4j.appender.im.layout.ConversionPattern =[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n
- #應用於socket
- log4j.appender.SOCKET=org.apache.log4j.RollingFileAppender
- log4j.appender.SOCKET.RemoteHost=localhost
- log4j.appender.SOCKET.Port=5001
- log4j.appender.SOCKET.LocationInfo=true
- # Set up for Log Facter 5
- log4j.appender.SOCKET.layout=org.apache.log4j.PatternLayout
- log4j.appender.SOCET.layout.ConversionPattern=[start]%d{DATE}[DATE]%n%p[PRIORITY]%n%x[NDC]%n%t[THREAD]%n%c[CATEGORY]%n%m[MESSAGE]%n%n
- # Log Factor 5 Appender
- log4j.appender.LF5_APPENDER=org.apache.log4j.lf5.LF5Appender
- log4j.appender.LF5_APPENDER.MaxNumberOfRecords=2000
- # 傳送日誌給郵件
- log4j.appender.MAIL=org.apache.log4j.net.SMTPAppender
- log4j.appender.MAIL.Threshold=FATAL
- log4j.appender.MAIL.BufferSize=10
- log4j.appender.MAIL.From=yyflyons@163.com
- log4j.appender.MAIL.SMTPHost=www.wusetu.com
- log4j.appender.MAIL.Subject=Log4J Message
- log4j.appender.MAIL.To=yyflyons@126.com
- log4j.appender.MAIL.layout=org.apache.log4j.PatternLayout
- log4j.appender.MAIL.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n
再次執行你的程式,你會發現Log4j的警告消失了。不過發現以前的Log4j控制檯資訊也沒有了,其實只要把上面詳細配置的log4j.rootLogger=CONSOLE,FILE改為log4j.rootLogger=DEBUG,CONSOLE,FILE,你就發現,控制檯資訊又回來了。
Java程式碼
- log4j.rootLogger=CONSOLE,FILE
- #log4j.rootLogger=DEBUG,CONSOLE,FILE
- log4j.addivity.org.apache=true