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上)有点痛苦,尽管也可以自动化。
答案 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