And*_*sky 2 java logging log4j
我想将具有错误级别的所有消息重定向到文件,并将具有信息级别的消息重定向到控制台.这是我的log4j.properties:
log4j.rootLogger=INFO, stdout
log4j.logger.java.lang.Exception=ALL, java.lang.Exception
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
log4j.appender.java.lang.Exception=org.apache.log4j.RollingFileAppender
log4j.appender.java.lang.Exception.File=\\clientexceptionlog.txt
log4j.appender.java.lang.Exception.MaxFileSize=2048KB
log4j.appender.java.lang.Exception.layout=org.apache.log4j.PatternLayout
log4j.appender.java.lang.Exception.layout.ConversionPattern=%d [%t] %-5p %c - %m%n
Run Code Online (Sandbox Code Playgroud)
但似乎它没有像我期望的那样工作:clientexceptionlog.txt总是空的.我做错了什么?谢谢!
您可以使用该Treshold选项.这样做,你可以设置为rootLoggerstdout和你的文件appender(我myAppender在下面的代码片段中命名):
log4j.rootLogger=INFO, stdout, myAppender
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
log4j.appender.myAppender=org.apache.log4j.RollingFileAppender
log4j.appender.myAppender.Threshold=WARN
log4j.appender.myAppender.File=\\clientexceptionlog.txt
log4j.appender.myAppender.MaxFileSize=2048KB
log4j.appender.myAppender.layout=org.apache.log4j.PatternLayout
log4j.appender.myAppender.layout.ConversionPattern=%d [%t] %-5p %c - %m%n
Run Code Online (Sandbox Code Playgroud)
它有什么作用?它将具有loglevel INFO或更高级别的所有内容发送到stdout和myAppender.虽然stdout将输出所有内容(包括更高的loglevel,如WARN和ERROR),myAppender将过滤掉低于WARN的所有内容(由于log4j.appender.myAppender.Threshold=WARN).
顺便说一句:不要java.lang.Exception用作appender的名字.阅读此配置的任何人都可能会感到困惑(包括我!)
| 归档时间: |
|
| 查看次数: |
2606 次 |
| 最近记录: |