如何使用同一个记录器来记录不同级别的日志到控制台+日志文件?[英] How to use the same logger to log different levels to console + logfile?

本文是小编为大家收集整理的关于如何使用同一个记录器来记录不同级别的日志到控制台+日志文件?的处理/解决方法,可以参考本文帮助大家快速定位并解决问题,中文翻译不准确的可切换到English标签页查看源文。

问题描述

我有一个log4j logger,当前将日志写入台和文件,该日志正常.

稍后,我想将其配置为日志文件的记录信息 +错误,但仅在控制台上显示错误.我需要改变什么才能实现这一目标?

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请求.但是我希望它们仍在控制台中显示.如何?

推荐答案

基于Appender的配置

除非与根级配置相同,否则必须单独完成每个应用程序的日志级别.下面的示例log4.properties文件被配置为log INFO及更高版本,但仅在文件中ERROR及以上.

log4j.appender.[appender-name].Threshold=[Level]

查看以下示例的最后一行(from" 如何将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

基于软件包的日志级别

以下任何以下都会有所帮助.

log4j.logger.[package]=[Level]
log4j.logger.[package]=[Level], [Appender]

作为一个例子:

log4j.logger.org.apache.cxf=INFO, console

其他推荐答案

按照这个问题(它的答案)您必须在附属机上设置一个门槛:

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

本文地址:https://www.itbaoku.cn/post/1574923.html

问题描述

I have a log4j logger that currently writes the log both to console and to a file, which works fine.

Later I'd like to configure it to log INFO + ERROR to the logfile, but only show ERROR on console. What would I have to change to achieve this?

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

Further, I'd like to prevent the CXF XML requests to be logged in the file. But I want them still to be shown in the console. How?

推荐答案

Appender based configuration

Configuring the log levels per each appender has to be done separately unless it is same as the root level configuration. Below sample log4.properties file is configured to log INFO and above into the console, but only ERROR and above into the file.

log4j.appender.[appender-name].Threshold=[Level]

Look at the last line of the below example (from "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

Package based log levels

Any of the followings will help.

log4j.logger.[package]=[Level]
log4j.logger.[package]=[Level], [Appender]

As an example:

log4j.logger.org.apache.cxf=INFO, console

其他推荐答案

As per this SO question (and its answer) you have to set a threshold on your appenders:

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