log4j - 未写入文件的日志

时间:2013-11-28 11:46:16

标签: java logging log4j

我见过有关它的问题,但没有一个对我有帮助。 我正在使用log4j,但由于它在控制台上工作正常,因此它不会向声明的文件写入任何内容。更重要的是,文件已创建,但没有任何内容保存在其中。 代码:

#default
log4j.rootLogger=ERROR,console

#Console Appender
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=[%5p] [%t %d{hh:mm:ss}] (%F:%M:%L) %m%n

#Custom assignments
log4j.logger.controller=DEBUG,console
log4j.logger.service=DEBUG,console
log4j.logger.dao=DEBUG,console

#Disable additivity
log4j.additivity.controller=false
log4j.additivity.service=false
log4j.additivity.dao=false

#MyLogger
log4j.logger.classPath.myClass = INFO, CACHE

log4j.appender.CACHE=org.apache.log4j.RollingFileAppender
log4j.appender.CACHE.File = ./logs/cache.log
log4j.appender.CACHE.bufferedIO = false
log4j.appender.CACHE.ImmediateFlush=true
log4j.appender.CACHE.Threshold=info
log4j.appender.CACHE.layout=org.apache.log4j.PatternLayout
log4j.appender.CACHE.layout.ConversionPattern=[%5p] [%t %d{hh:mm:ss}] (%F:%M:%L) %m%n

我确定正确定义了记录器,因为当additivity=false时,日志不会按预期显示在控制台中。并且当添加log4j.logger.myClass = INFO, CACHE, console时,再次在控制台中显示日志。因此记录器声明似乎很好。那么他们为什么不在日志文件中显示呢?

我正在使用org.apache.log4j.Logger.getLogger(myClass.class).info('msg')语法来使用记录器。 org.apache.log4j.Logger.getLogger("classPath.myClass").info('msg')也无效。

尝试log4j.rootLogger=INFO,console,CACHE时,文件中也没有任何内容。

1 个答案:

答案 0 :(得分:1)

错误地指定了记录器名称。请按以下方式更改

#MyLogger
log4j.logger.MyClass = INFO, CACHE

而不是

#MyLogger
log4j.logger.myClass = INFO, CACHE

MyClass 错误地表示为 myClass 。您还可以按如下方式进行记录器实例化

Logger.getLogger("MyClass").info('msg');

希望这有帮助!