2013-11-28 66 views
1

我已经看到它的问题,但没有一个帮助我。 我使用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也没有文件中出现。

+0

尝试更改为log4j.rootLogger =信息,控制台 – Keerthivasan

+0

不起作用。根据这个来源:http://www.goldenline.pl/ramka/aHR0cDovL2xvZ2dpbmcuYXBhY2hlLm9yZy9sb2c0ai8xLjIvbWFudWFsLmh0bWw=这并不重要,因为我的记录器已定义了其级别。 – Filu

+0

因为该级别是为MyClass定义的,所以级别不会从父级继承 – Keerthivasan

回答

1

记录器名称被错误地指定。如下

#MyLogger 
log4j.logger.MyClass = INFO, CACHE 

,而不是

#MyLogger 
log4j.logger.myClass = INFO, CACHE 

MyClass的被误记为myClass的请更换。您还可以使记录器实例化如下

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

希望这有助于!

+0

实际上,MyClass只是一个示例,并非实际的名称。 MyClass表示classpath + className或只是一个类路径。但将其更改为简称(如myClass)并将其与Logger.getLogger(“myClass”)一起使用仍然无效。 – Filu

+0

记录器可以使用名称或使用包进行实例化。请完成问题。所以,这将很容易帮助 – Keerthivasan

+0

好吧,我改变了一些问题,我希望我明确表示,记录器的声明是好的。问题只在于将日志写入文件。 – Filu