log4j停止记录到该文件,

6rqinv9w  于 2022-10-22  发布在  Java
关注(0)|答案(5)|浏览(242)

我在我的java应用程序中使用log4j,但一段时间后,没有抛出任何异常,它停止了日志记录
我的log4j配置如下。

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

我的文件附加程序包含一些代码来执行zip操作并指定日志文件格式等。
这一段时间日志记录正常,但突然停止了日志记录,也没有抛出异常
有人能告诉我问题出在哪里吗?
有人知道这样的log4j相关问题吗?

nnsrf1az

nnsrf1az1#

这发生在我身上。一天工作,第二天不工作。我回去后意识到我已经改变了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>

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

igetnqfo

igetnqfo2#

很难回答为什么你的日志记录停止了。
首先,检查硬盘空间,是否已满。
然后编写一个测试用例,其中线程每秒轮询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
blpfk2vs

blpfk2vs3#

您是否考虑过log4j仍在写入一个文件,但该文件已被自定义附加程序从其父目录中取消链接的可能性?

pnwntuvh

pnwntuvh4#

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

wgxvkvu9

wgxvkvu95#

这可能是一种非常罕见的情况,但我曾经遇到过一个类似的问题,它是由使用Cloner引起的。在克隆启用了log4j日志记录的对象后,日志记录就停止了。解决方案是使用以下方法从克隆中排除log4j类:
cloner.dontClone(org.apache.log4j.Logger.class, org.apache.log4j.LogManager.class,)

相关问题