2

我正在使用 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 org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

在我的课堂上:

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

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

4

3 回答 3

1

代替

log4j.rootLogger=off

log4j.rootLogger=DEBUG,stdout,Rollfile
于 2013-03-20T09:57:17.293 回答
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
于 2013-03-20T09:58:21.720 回答
-1

解决方法很简单: 将“Log4j.properties”文件移到项目主目录中。

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

属性文件结构

于 2018-07-13T13:30:06.303 回答