2010-07-05 65 views
7

我使用log4j的在我的Java应用程序,但没有抛出任何异常一段时间后,它停止记录log4j的停止记录到文件,

我log4j的配置如下图。

log4j.rootLogger=INFO,FILE 
log4j.appender.FILE=com.test.TestFIleAppender 
log4j.appender.FILE.MaxFileSize=20MB 
log4j.appender.FILE.MaxBackUpIndex=200 

我的文件appender包含一些代码来执行zip操作并指定日志文件格式和所有。

这是记录罚款一段时间,但突然停止伐木,也不例外也扔

任何机构可以告诉我什么可以是问题?

任何机构都知道像这样的任何log4j相关的问题?

+0

有一个问题在这里? – 2010-07-05 07:50:37

+0

你确定它是带有大写字母I的'TestFIleAppender'吗?另外,您是否尝试在INFO级别打印测试消息? – 2010-07-05 07:52:22

+0

是的,信息级别的痕迹很好 – sreejith 2010-07-05 07:53:17

回答

1

很难回答,为什么你的记录停止。

首先检查硬盘空间是否已满。

编写一个测试用例,其中一个线程每秒轮询一次INFO类型的日志消息。比你可以检查这是否是空间或内存问题。

请注意:当程序正在等待某个地方并且没有线程或动作正在工作时,您将看不到任何日志消息。请通过调试来检查代码行是否在循环中执行(或者您期望看到消息),在此循环中应该显示日志消息。

这是我的log4j属性文件的一个例子。可能是有帮助:

log4j.rootLogger=INFO, stdout, logfile 

log4j.appender.stdout=org.apache.log4j.ConsoleAppender 
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout 
log4j.appender.stdout.layout.ConversionPattern=%d %p (%t) [%c] - %m%n 

log4j.appender.logfile=org.apache.log4j.RollingFileAppender 
log4j.appender.logfile.File=C:/log/client.log 
log4j.appender.logfile.MaxFileSize=5MB 
log4j.appender.logfile.MaxBackupIndex=0 
log4j.appender.logfile.layout=org.apache.log4j.PatternLayout 
log4j.appender.logfile.layout.ConversionPattern=%d %p [%c] - %m%n 
+0

真实的磁盘空间和我的应用程序是好的,基本上我的应用程序是服务器,它能够处理请求和所有...但跟踪不打印 – sreejith 2010-07-05 07:57:50

+0

我的log4j文件也是类似的...你知道任何log4j中的已知问题就像这样 – sreejith 2010-07-05 07:58:53

+0

是他们的一个原因,为什么你使用自己的FileAppender? – 2010-07-05 07:59:45

0

你有没有考虑过的可能性,log4j的仍然是写入文件,但该文件已经从它的父目录由您的自定义的appender断开链接?

4

这发生在我身上。工作一天,然后再不工作。我回去后意识到我改变了POM的依赖关系,并做了一些Google搜索。

当我纠正这个问题时,我的日志记录返回。我会确保你有以下的文物同步:

<dependency> 
     <groupId>org.slf4j</groupId> 
     <artifactId>slf4j-api</artifactId> 
     <version>1.7.1</version> 
    </dependency> 

    <dependency> 
     <groupId>org.slf4j</groupId> 
     <artifactId>slf4j-simple</artifactId> 
     <version>1.7.1</version> 
    </dependency> 

    <dependency> 
     <groupId>log4j</groupId> 
     <artifactId>log4j</artifactId> 
     <version>1.2.17</version> 
    </dependency> 

http://www.slf4j.org/manual.html

0

它发生在我加入沙丁鱼库到我的依赖关系之后。然后,从这里的答案之一,我将slf4j-log4j12库添加到依赖关系,并且它开始再次运行。

0

可能是非常罕见的情况,但我曾经遇到过使用Cloner引起的类似问题。克隆启用log4j日志记录的对象后,日志记录刚刚停止工作。解决的办法是从与克隆排除log4j的类:

cloner.dontClone(org.apache.log4j.Logger.class, org.apache.log4j.LogManager.class,)