我有一个log4j记录器,它当前将日志写入控制台和文件,工作正常。
稍后我想将它配置为将INFO + ERROR记录到日志文件中,但只在控制台上显示ERROR。为实现这一目标我需要改变什么?
log4j.rootLogger=INFO, console, MyFileAppender
log4j.logger.org.apache.cxf=INFO, console
log4j.logger.org.apache.cxf.interceptor.LoggingInInterceptor=INFO, console
log4j.logger.org.apache.cxf.interceptor.LoggingOutInterceptor=INFO, console
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.Target=System.out
log4j.appender.MyFileAppender=org.apache.log4j.RollingFileAppender
log4j.appender.MyFileAppender.Append=true
log4j.appender.MyFileAppender.File=c:/logs.log
此外,我想阻止将CXF XML请求记录在文件中。但是我希望它们仍然可以在控制台中显示出来。怎么样?
答案 0 :(得分:9)
配置每个appender的日志级别必须单独完成,除非它与根级别配置相同。下面的示例log4.properties
文件已配置为将INFO
及更高版本记录到控制台中,但只有ERROR
及更高版本记录到文件中。
log4j.appender.[appender-name].Threshold=[Level]
请查看以下示例的最后一行(来自“How to integrate log4j with your Java project”)。
# root level configurations
log4j.rootLogger=INFO,console,file
# configuration for console outputs
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.layout=org.apache.log4j.PatternLayout
# configuration for file output (into a file named messages.log)
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.File=messages.log
log4j.appender.file.layout=org.apache.log4j.PatternLayout
# threshold for file output
log4j.appender.file.Threshold=ERROR
以下任何一项都有帮助。
log4j.logger.[package]=[Level]
log4j.logger.[package]=[Level], [Appender]
举个例子:
log4j.logger.org.apache.cxf=INFO, console
答案 1 :(得分:2)
根据this SO question (and its answer),你必须为你的appender设置一个阈值:
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.Target=System.out
log4j.appender.console.Threshold=ERROR
log4j.appender.MyFileAppender=org.apache.log4j.RollingFileAppender
log4j.appender.MyFileAppender.Append=true
log4j.appender.MyFileAppender.File=c:/logs.log
log4j.appender.MyFileAppender.Threshold=INFO