【问题标题】:Nixing screen output with log4j使用 log4j 处理屏幕输出
【发布时间】:2012-08-07 01:01:07
【问题描述】:

log4j 的一个恼人的事情是它总是想把东西转储到屏幕上。如果我登录到文件,我不需要它。我确定这与我设置 log4j.properties 文件的方式有关。解决所有这些配置问题令人沮丧! :-)

对于我当前调用 Balancer 的程序,这就是我进行记录器初始化的方式。也许它是错误的或什么的。

static Logger log = Logger.getLogger(Balancer.class);

我的 log4j.properties 的部分转储:

log4j.rootLogger=fatal, stdout
log4j.logger.Balancer=fatal, rollingLog

# I still don't understand how category stuff works yet
log4j.category.Balancer=info, BalancerLog

#### First appender writes to console
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p %d [%t] (%F:%L) - %m%n

#### Second appender writes to a file
# Control the maximum log file size
# Archive log files (ten backups here)
log4j.appender.rollingLog=org.apache.log4j.RollingFileAppender
log4j.appender.rollingLog.File=default.log
log4j.appender.rollingLog.MaxFileSize=10000KB
log4j.appender.rollingLog.MaxBackupIndex=10
log4j.appender.rollingLog.layout=org.apache.log4j.PatternLayout
log4j.appender.rollingLog.layout.ConversionPattern=%5p %d [%t] (%F:%L) - %m%n

log4j.appender.BalancerLog=org.apache.log4j.RollingFileAppender
log4j.appender.BalancerLog.File=Balancer.log
log4j.appender.BalancerLog.MaxFileSize=100000KB
log4j.appender.BalancerLog.MaxBackupIndex=10
log4j.appender.BalancerLog.layout=org.apache.log4j.PatternLayout
log4j.appender.BalancerLog.layout.ConversionPattern=%5p %d [%t] (%F:%L) - %m%n

我了解了 rootLogger 如何将内容发送到 stdout appender。是否有 /dev/null 附加程序?您必须至少有一个附加程序。

无论如何,如果不出意外,我现在的基本解决方法是将屏幕输出发送到 /dev/null。顺便说一句,我的 Java 程序在预定的批处理环境中运行(无 GUI)。必须清理假脱机文件(是的,这是在 AS/400 上)有点麻烦,尽管这也可以自动化。

【问题讨论】:

  • 你的目标是什么?您是否希望 Balancer 消息仅发送至 Balancer.log 文件,还是希望致命级别的 Balancer 消息也发送至 default.log

标签: log4j


【解决方案1】:

是否有 /dev/null 附加程序?

是的。

log4j.appender.devnull=org.apache.log4j.varia.NullAppender
log4j.rootLogger=fatal, devnull

我不确定你从哪里得到log4j.category.*,但这不是我以前见过的东西,我会坚持只使用appenderlogger

log4j.logger.Balancer=fatal, rollingLog, BalancerLog

将为名为@9​​87654327@(没有包前缀)的记录器发送fatal 级别消息到rollingLog 和BalancerLog 附加程序。如果将记录器级别更改为info

log4j.logger.Balancer=info, rollingLog, BalancerLog

然后它将info 及以上级别的消息发送到两个附加程序。您不能限制它,以便 BalancerLog 获取 info 及更高版本,但 rollingLog 在每个记录器的基础上仅获取 fatal 消息,但您可以在 rollingLog 附加程序上设置阈值,以便它只记录fatal 消息(不管它们来自哪个记录器)

log4j.appender.rollingLog=org.apache.log4j.RollingFileAppender
log4j.appender.rollingLog.Threshold=fatal
log4j.appender.rollingLog.File=default.log
# other parameters as before

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多