我正在开发一个以前托管在 JBoss 上的 grails 应用程序,但现在我们已经转移到 Apache Tomcat。
JBoss 上使用 log4j 的 Grails 应用程序运行良好,但我们面临一个问题,org.apache.log4j.DailyRollingFileAppender
因为我们在 Apache Tomcat 中使用 log4j 进行应用程序日志记录和服务器日志记录。
问题是org.apache.log4j.DailyRollingFileAppender
覆盖旧的备份日志文件(例如,我们在日期 8 的日志中得到日期为 9 的日志,但没有找到 8 的日志),有时它开始记录前一天的备份文件。
我不知道这个 appender 有什么问题,因为他们在 JBoss 上编写了org.jboss.logging.appender.DailyRollingFileAppender
wrapper。有什么问题org.apache.log4j.DailyRollingFileAppender
吗?你能建议一个解决方案吗?
<appender class="org.apache.log4j.DailyRollingFileAppender" name="FILE">
<errorHandler class="org.apache.log4j.helpers.OnlyOnceErrorHandler"/>
<param name="Threshold" value="INFO"/>
<param name="File" value="${catalina.base}/logs/applog.log"/>
<param name="Append" value="true"/>
<param name="DatePattern" value="'.'yyyy-MM-dd"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss,SSS Z} level=%-5p class=%c %X{uniqueId} %X{hostname} %X{requestURI} %X{clientIP} %X{userId} %X{realmId} %X{sessionId} %X{locale} %X{callingHost} %X{uniqueIdCallingHost} %X{asyncUserId} %X{isAsync} %X{taskId} %m%n"/>
</layout>
</appender>
由于这不起作用,我们使用org.apache.log4j.rolling.RollingFileAppender
log4j 的“附加”库。下面是 appender 配置,但它仍然无法正常工作。
<appender name="ROLL" class="org.apache.log4j.rolling.RollingFileAppender">
<param name="File" value="${catalina.base}/logs/paymentRolling.log" />
<param name="Threshold" value="INFO"/>
<param name="Append" value="true"/>
<rollingPolicy class="org.apache.log4j.rolling.TimeBasedRollingPolicy">
<param name="FileNamePattern" value="${catalina.base}/logs/appRolling.log.%d{yyyy-MM-dd}"/>
</rollingPolicy>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss,SSS Z} level=%-5p class=%c %X{uniqueId} %X{hostname} %X{requestURI} %X{clientIP} %X{userId} %X{realmId} %X{sessionId} %X{locale} %X{callingHost} %X{uniqueIdCallingHost} %X{asyncUserId} %X{isAsync} %X{taskId} %m%n"/>
</layout>
</appender>