Java log4j已停止记录到该文件,

Java log4j已停止记录到该文件,,java,log4j,Java,Log4j,我在java应用程序中使用log4j,但经过一段时间没有抛出任何异常,它停止了日志记录 我的log4j配置如下 log4j.rootLogger=INFO,FILE log4j.appender.FILE=com.test.TestFIleAppender log4j.appender.FILE.MaxFileSize=20MB log4j.appender.FILE.MaxBackUpIndex=200 My file appender包含一些代码,用于执行zip操作和指定日志文件格式以及所

我在java应用程序中使用log4j,但经过一段时间没有抛出任何异常,它停止了日志记录

我的log4j配置如下

log4j.rootLogger=INFO,FILE
log4j.appender.FILE=com.test.TestFIleAppender
log4j.appender.FILE.MaxFileSize=20MB
log4j.appender.FILE.MaxBackUpIndex=200
My file appender包含一些代码,用于执行zip操作和指定日志文件格式以及所有

这是一段时间的日志记录,但突然停止了日志记录,也没有引发异常

有谁能告诉我问题出在哪里


任何人都知道任何与log4j相关的问题吗?

很难回答,为什么日志会停止

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

然后编写一个测试用例,其中线程每秒轮询一条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

您是否考虑过log4j仍在写入文件,但您的自定义appender已将该文件与其父目录断开链接的可能性?

这发生在我身上。一天工作,第二天不工作。我回去后意识到我已经改变了POM的依赖关系,并在谷歌上搜索了一下

当我更正此问题时,我的日志记录返回。我会确保您同步以下工件:

    <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>

org.slf4j

在将沙丁鱼库添加到依赖项后,我遇到了这种情况。然后,从这里的一个答案中,我将slf4j-log4j12库添加到依赖项中,它再次开始工作。

这可能是一种非常罕见的情况,但我曾经遇到一个类似的问题,它是由使用。在克隆启用了log4j日志记录的对象之后,日志记录停止工作。解决方案是通过以下方式从克隆中排除log4j类:


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

您确定它是
TestFIleAppender
大写的I吗?另外,您是否尝试在信息级别打印测试消息?是的,信息级别的跟踪即将完成。。。所以我是对的?如果不抛出异常,问题可能是其他问题。任何已知的log4j问题,如这实际上是磁盘空间和我的应用程序是正常的,基本上我的应用程序是服务器,它能够处理请求和所有。。。但是跟踪不打印我的log4j文件也是相似的。。。你知道log4j中有任何已知的问题,比如这是一个原因,为什么你要使用自己的FileAppender?我有一些逻辑,可以创建旧日志文件的zipfiles,并将时间戳附加到新创建的日志文件,等等