java - Log4J 未正确归档日志

标签 java logging log4j

我正在尝试为我的应用程序配置 log4j。我希望它每天滚动,这意味着我希望它创建一个包含日志的新文本文件并存档旧的文本文件。由于某种原因,我的记录器删除旧日志并覆盖它们,而不归档旧日志。

当我将其更改为每分钟滚动时,它可以正常工作。它每分钟都会归档我的日志并写入新日志。

当我将其更改为每小时滚动时,会出现与每天滚动的情况相同的问题。它只是简单地删除旧日志而不存档它们。

有人能给我指出正确的方向吗?谢谢。

log4j.rootLogger=DEBUG, A1 
log4j.logger.org.hibernate=ERROR

log4j.appender.A1=org.apache.log4j.DailyRollingFileAppender


log4j.appender.A1.File=C\:Desktop\\MyLogs\\data.log


#log4j.appender.A1.DatePattern='.'yyyy-MM-dd  rolls daily
#rolls every minute
#log4j.appender.A1.DatePattern='.'yyyy-MM-dd-HH-mm

#rolls every hour
log4j.appender.A1.DatePattern='.'yyyy-MM-dd-HH  

log4j.appender.A1.layout=org.apache.log4j.PatternLayout 
log4j.appender.A1.layout.ConversionPattern=%d{MM/dd/yyyy HH:mm:ss}|%-5p|%c:%m%n

最佳答案

我正在本地计算机上运行 Weblogic 服务器,并在其上测试我的应用程序。 看来每次对 log4j 属性文件进行任何更改时,都需要重新启动服务器才能使更改生效。我正在重新发布该项目而无需重新启动服务器。

上面的记录器配置对于分钟和小时记录都运行良好。今晚我将测试每日日志记录,但我确信一切都会井然有序。

如果有人感兴趣,这里是我的记录器的 Maven 依赖项:

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

<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-log4j12</artifactId>
    <version>1.4.2</version>
</dependency>

<dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-slf4j-impl</artifactId>
    <version>2.1</version>
</dependency>

<dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-core</artifactId>
    <version>2.1</version>
</dependency>

关于java - Log4J 未正确归档日志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26738582/

相关文章:

java - JDBC批量插入异常处理

java - 使用 java 的 JSON 模式验证

java - Ajax 调用子类的 Jackson 编码 (Spring MVC)

python - 为什么 print() 和 logger 对象以意外的顺序流式传输到控制台输出?

java - ODF工具包-转换问题

java - 为什么记录了 INFO 而不是 FINEST

java - 防止在 SessionScoped beans 中序列化 CDI 注入(inject)的 Logger

java - log4j 日志中的额外信息

logging - 为什么自动注入(inject)日志对象并不总是在 grails 中工作?

java - 这是否以正确的方式使用 Log4j Hadoop?