java - 如何使用相同的记录器将不同级别的日志记录到控制台+日志文件?

标签 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

此外,我想阻止将 CXF XML 请求记录到文件中。但我希望它们仍显示在控制台中。怎么办?

最佳答案

基于附加程序的配置

配置每个附加程序的日志级别必须单独完成,除非它与根级别配置相同。下面的示例 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

关于java - 如何使用相同的记录器将不同级别的日志记录到控制台+日志文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19788839/

相关文章:

jquery - 高流量且有多个不良主机

java - 在客户端和服务器之间将字符串转换为 byte[] 并返回字符串

java - 密码编辑记录器

java - 从文本文件 : Java 创建迷宫图

java - Clojure 中的 "long... numbers"参数相当于什么?

java - 未实现未连接的套接字

scala - 如何将Apache Spark日志从驱动程序和从属服务器重定向到使用log4j启动Spark作业的计算机的控制台?

java - 可以无限地创建和删除实体吗?

java - Android Studio - 未安装 HAX 内核模块

tomcat - Hudson 日志进入 stderr 并且也没有滚动