2013-03-20 128 views
1

我正在使用log4j.properties文件在我的java项目中生成日志。我只需要自定义日志语句和与该语句相对应的日志文件。 我的日志文件是这样的:创建日志文件但文件为空

log4j.logger.org.apache.axis.enterprise=DEBUG, stdout,Rollfile 
log4j.rootLogger=off 
log4j.logger.com.gridsense.server.automode=Rollfile,stdout 
log4j.appender.Rollfile=org.apache.log4j.RollingFileAppender 
log4j.appender.Rollfile.Threshold=DEBUG 
log4j.appender.Rollfile.File=D:/javaProjects/AutomodeGS_Prachi/AutoGS.log 
log4j.appender.Rollfile.MaxFileSize=2MB 
log4j.appender.Rollfile.layout=org.apache.log4j.PatternLayout 
log4j.appender.Rollfile.layout.ConversionPattern=[%t] %-5p %c %d{dd/MM/yyyy HH:mm:ss} – %m%n 

log4j.appender.stdout=org.apache.log4j.ConsoleAppender 
log4j.appender.stdout.Threshold=DEBUG 
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout 
log4j.appender.stdout.layout.ConversionPattern=%-4r [%t] %-5p %c %x – %m%n 

但是当我运行该程序的日志报表打印在控制台和空日志文件被创建。我不明白什么是问题。为什么我的日志文件是空的? 在我的课堂我写的声明

private static Logger logger = Logger.getLogger(Driver.class); 

我进口

import org.apache.log4j.Logger; 

其实我读给有关“Log4J的文件空”问题的解决方案,并在我的代码做了一些修改。我改变了import语句

import org.apache.commons.logging.Log; 
import org.apache.commons.logging.LogFactory; 

,并在我的课:

static Log logger = LogFactory.getLog(Driver.class); 

我仍然遇到同样的问题。任何建议都会有帮助。

+0

您是否将log4j.logger.yourPackageOrClass添加到属性文件中? – 2013-03-20 09:48:20

回答

0

更换

log4j.rootLogger=off 

log4j.rootLogger=DEBUG,stdout,Rollfile 
+0

如果我将log4j.rootLogger = off语句替换为log4j.rootLogger = DEBUG,stdout,Rollfile,那么我将获得所有日志语句。但我只想要选择性语句,所以添加log4j.rootLogger = off – prachi 2013-03-20 10:50:45

+0

将DEBUG更改为INFO,那么只会打印那些在java文件中的日志。 logger.info(“这行将被打印”); – happy 2013-03-20 10:54:48

1

有在你前面的代码没有问题,但较新的代码是更好,因为你的代码是不依赖于log4j的API。

你确定你的应用程序正在加载这个日志文件吗?

rollfile将仅从包com.gridsense.server.automode下的类获取日志消息。你确定有一些日志消息正在执行吗?

通常我一直使用

log4j.rootLogger=DEBUG, stdout,Rollfile 

,而不是下方,不知道是否有任何冲突。

log4j.logger.org.apache.axis.enterprise=DEBUG, stdout,Rollfile 
log4j.rootLogger=off 
+0

如果我删除这个log4j.rootLogger = off语句并添加log4j.rootLogger = DEBUG,stdout,Rollfile,那么我会得到所有的日志语句。但我只希望选择性语句如此添加log4j.rootLogger = off – prachi 2013-03-20 10:49:39

+0

您应该有log4j.rootLogger = DEBUG,stdout和log4j.logger.com.gridsense.server.automode = Rollfile。 – 2013-03-20 10:54:49

+0

你好,我找到了答案。需要更换下面的语句 log4j.logger.org.apache.axis.enterprise = DEBUG,标准输出,Rollfile 通过 log4j.logger.com.gridsense.server.automode = DEBUG,标准输出,Rollfile – prachi 2013-03-20 11:14:06