我正在使用以前託管在JBoss上的grails應用程序,但現在我們已轉移到Apache Tomcat。Tomcat 7上的Grails應用程序:log4每日日誌過度使用舊的備份日誌
使用log4j在JBoss上的Grails應用程序完美地工作,但我們正在面臨org.apache.log4j.DailyRollingFileAppender
的問題,因爲我們在Apache Tomcat中使用log4j進行應用程序日誌記錄和服務器日誌記錄。
問題是org.apache.log4j.DailyRollingFileAppender
會覆蓋舊的備份日誌文件(例如,我們在日期8的日誌中找到日期9的日誌,並且沒有找到日誌8),有時它會開始在前一天的備份文件中進行日誌記錄。
我不知道這個appender有什麼問題,因爲在JBoss上他們寫了org.jboss.logging.appender.DailyRollingFileAppender
包裝。 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>