Nixing屏幕输出与log4j

时间:2012-08-06 16:31:55

标签: log4j

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 appender?你必须至少有一个appender。

无论如何,如果没有别的,我现在的基本工作是将屏幕输出发送到/ dev / null。顺便说一下,我的Java程序在预定的批处理环境中运行(没有GUI)。必须清理假脱机文件(是的,这是在AS / 400上)有点痛苦,尽管也可以自动化。

1 个答案:

答案 0 :(得分:8)

  

是否有/ dev / null appender?

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

我不知道你从哪里来log4j.category.*,但它不是我以前见过的东西,我会坚持只使用appender和{{1 }}

logger

会将名为log4j.logger.Balancer=fatal, rollingLog, BalancerLog 的记录器(没有包前缀)的fatal级消息发送到rollingLog和BalancerLog appender。如果您将记录器级别更改为Balancer

info

然后它会向两个appender发送级别log4j.logger.Balancer=info, rollingLog, BalancerLog 及更高级别的消息。您不能限制它,以便BalancerLog获得info及以上,但rollingLog仅基于每个记录器获得info条消息,但您可以设置阈值rollingLog appender,它只记录fatal条消息(无论它们来自哪个记录器)

fatal