已创建日志文件但文件为空

时间:2013-03-20 09:44:08

标签: java logging log4j

我正在使用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);

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

3 个答案:

答案 0 :(得分:1)

替换

log4j.rootLogger=off

log4j.rootLogger=DEBUG,stdout,Rollfile

答案 1 :(得分: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

答案 2 :(得分:0)

解决方案非常简单: 在主项目目录中移动“ Log4j.properties”文件

  • 如果您在任何内部Package或Folder下都有Log4j.properties文件,则将其移动到主项目文件夹中。

Properties file structure