Log4J 未正确归档日志

Posted

技术标签:

【中文标题】Log4J 未正确归档日志【英文标题】:Log4J is not archiving logs properly 【发布时间】:2014-11-04 15:12:47 【问题描述】:

我正在尝试为我的应用程序配置 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=%dMM/dd/yyyy HH:mm:ss|%-5p|%c:%m%n

【问题讨论】:

【参考方案1】:

我正在测试我的应用程序的本地机器上运行 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>

【讨论】:

以上是关于Log4J 未正确归档日志的主要内容,如果未能解决你的问题,请参考以下文章

oracle 10g 如何正确清除归档日志

ORACLE如何删除归档日志文件?

Oracle 11g正确删除归档日志方法

使用Rman备份的归档日志恢复数据库时,需要先还原归档日志吗

Oracle开启归档日志

数据库归档模式