我正在使用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 :(得分: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”文件。