首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >log4j:基于类更改一个附加器的阈值

log4j:基于类更改一个附加器的阈值
EN

Stack Overflow用户
提问于 2012-11-23 01:32:16
回答 2查看 1.4K关注 0票数 1

我希望实现以下目标:

代码语言:javascript
复制
All log-messages with TRACE or higher should be logged to log-trace.log
All log-messages with DEBUG or higher should be logged to log-debug.log

In general messages with DEBUG or higher should be logged to stdout, but:
  for Class de.foo only INFO or higher should be logged to stdout,
  for Class de.bar also TRACE and higher should be logged to stdout.

我设法让拆分成文件的功能生效:

代码语言:javascript
复制
## Root logger
log4j.rootLogger=trace,STDOUT,FILE_DEBUG,FILE_TRACE
## Appenders
log4j.appender.STDOUT=org.apache.log4j.ConsoleAppender
log4j.appender.STDOUT.Threshold=DEBUG
# File appenders
log4j.appender.FILE_DEBUG=org.apache.log4j.RollingFileAppender
log4j.appender.FILE_DEBUG.File=logs/log-debug.log
log4j.appender.FILE_DEBUG.Threshold=DEBUG

log4j.appender.FILE_TRACE=org.apache.log4j.RollingFileAppender
log4j.appender.FILE_TRACE.File=logs/log-trace.log
log4j.appender.FILE_TRACE.Threshold=TRACE

# [..] Layouts

但是,如果我尝试更改stdout的调试级别,我也会更改进入文件的内容,例如

代码语言:javascript
复制
log4j.logger.de.foo=info 

使foo中的跟踪消息从trace-logfile中消失。我要找的东西可能是这样的:

代码语言:javascript
复制
log4j.appender.FILE_DEBUG.de.foo.Threshold=DEBUG

但这并不管用。感谢您的帮助:)

EN

回答 2

Stack Overflow用户

发布于 2012-11-23 03:03:28

我认为正确的方法是为附加器STDOUT编写自定义筛选器。因此,您将能够为特定包设置最低级别的控制台日志。下面是一个类似过滤器的例子:log4j isolating certain level from a class

请注意,您应该使用XML配置,因为过滤器在属性配置中不受支持。

票数 2
EN

Stack Overflow用户

发布于 2012-11-23 03:58:18

在log4j中是不可能的,使用logback,无论如何它都更好(顺便说一句,使用slf4j facade)

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13517617

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档