如何使用相同的记录器将不同级别记录到console + logfile?

mem*_*und 6 java web-services log4j cxf

我有一个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
Run Code Online (Sandbox Code Playgroud)

此外,我想阻止CXF XML请求记录在文件中.但是我希望它们仍然可以在控制台中显示出来.怎么样?

lka*_*mal 9

基于Appender的配置

除非与根级别配置相同,否则必须单独完成每个appender的日志级别配置.下面的示例log4.properties文件配置为登录INFO到控制台,但仅限ERROR于文件中.

log4j.appender.[appender-name].Threshold=[Level]
Run Code Online (Sandbox Code Playgroud)

查看下面示例的最后一行(来自" 如何将log4j与Java项目集成 ").

# 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
Run Code Online (Sandbox Code Playgroud)

基于包的日志级别

以下任何一项都有帮助.

log4j.logger.[package]=[Level]
log4j.logger.[package]=[Level], [Appender]
Run Code Online (Sandbox Code Playgroud)

举个例子:

log4j.logger.org.apache.cxf=INFO, console
Run Code Online (Sandbox Code Playgroud)