【问题标题】:log4j stopped logging to the file,log4j 停止记录到文件,
【发布时间】:2010-07-05 07:48:29
【问题描述】:

我在我的 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 相关问题吗?

【问题讨论】:

  • 你确定是TestFIleAppender 加上大写的I吗?另外,您是否尝试在 INFO 级别打印测试消息?
  • 是的,信息级别的跟踪进展顺利
  • 嗯...所以我记录对了吗?如果没有抛出异常,问题可能是其他问题。
  • 任何已知的类似这样的 log4j 问题

标签: java log4j


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    很难回答,为什么您的日志记录会停止。

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

    而不是编写一个测试用例,其中一个线程每秒轮询一次 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 文件也是类似的......你知道 log4j 中的任何已知问题像这样
    • 是他们的原因,你为什么要使用自己的 FileAppender?
    • 我有一些逻辑来创建旧日志文件的 zipfiles 并将时间戳附加到新创建的日志文件和所有
    【解决方案3】:

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

    【讨论】:

      【解决方案4】:

      sardine 库添加到我的依赖项后发生在我身上。然后,从这里的一个答案中,我将 slf4j-log4j12 库添加到依赖项中,它又开始工作了。

      【讨论】:

        【解决方案5】:

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

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

        【讨论】:

          猜你喜欢
          • 2015-12-22
          • 2017-09-25
          • 2020-02-21
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-03-17
          相关资源
          最近更新 更多