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