簡體   English   中英

log4j DailyRollingFileAppender 滾動兩次

[英]log4j DailyRollingFileAppender rolls two times

我一直在研究這個問題,我遇到了一些問題,但到目前為止還沒有找到一個具有相同(甚至類似)問題的問題。

問題不在於“如何配置 RollingFileAppender”。 它被配置了,它實際上是在滾動。 到目前為止,一切都很好。

上下文是,每天,每 15 分鍾,我們執行一個批處理,其中我們將 output 寫入兩個不同的日志文件:

  1. 一個通用日志文件,包含所有 output
  2. 功能日志,僅包含與分析人員相關的 output 部分。

配置如下:

log4j.rootLogger = info, rollingFile, functionalLog

log4j.appender.rollingFile=org.apache.log4j.DailyRollingFileAppender
log4j.appender.rollingFile.File= ../logs/general_log.log
log4j.appender.rollingFile.layout=org.apache.log4j.PatternLayout
log4j.appender.rollingFile.layout.ConversionPattern=%p %d %t %c - %m%n
log4j.appender.rollingFile.DatePattern='.'yyyy-MM-dd

log4j.appender.functionalLog=org.apache.log4j.DailyRollingFileAppender
log4j.appender.functionalLog.File= ../logs/functional_log.log
log4j.appender.functionalLog.layout=org.apache.log4j.PatternLayout
log4j.appender.functionalLog.layout.ConversionPattern=%m - %d%n
log4j.appender.functionalLog.filter.1=org.apache.log4j.varia.StringMatchFilter
log4j.appender.functionalLog.filter.1.StringToMatch=FUNC-LOG -
log4j.appender.functionalLog.filter.1.AcceptOnMatch=true
log4j.appender.functionalLog.filter.2=org.apache.log4j.varia.DenyAllFilter

這種配置已經工作了幾個月。 批處理每 15 分鍾執行一次(由 crontab 觸發),每晚執行兩個翻轉文件:

general_log.log.2020-05-18 function_log.log.2020-05-18

已創建,包含該特定日期的所有日志記錄。 日志是完整的,我們很高興。

幾天前,我們注意到我們正在丟失日志:顯然,即使第一次翻轉(在午夜)成功,系統也會第二次翻轉。 每天上午 10.30 的批處理執行將(再次)觸發(當前)日志滾動。

這導致前一天的日期文件(包含當天的所有日志)被當天前十個半小時的日志覆蓋。 結果:日志在前一天的日志文件中,我們每天只有大約 10 小時的日志,而不是 24 小時。

在調查過程中,我注意到我忘記了 FunctionalLog 配置中的 DatePattern,所以我添加了這個:

log4j.appender.functionalLog.DatePattern='.'yyyy-MM-dd

現在,我知道可以將翻轉設置為每年、每月、每天、每小時、每分鍾……,但由於某種原因,每天(上午 10.30 點)都會執行一些操作,使其再次翻轉。 log4j 和批次中沒有配置可以解釋這一點。

部署的代碼、log4j 配置和服務器配置都沒有變化。

有沒有人遇到過這樣的問題? 配置中有什么我們可以做的來避免這種情況嗎?

事實證明,問題不在於 crontab 或 log4j 配置。

顯然,服務器上的問題導致有兩個進程寫入日志文件。 我們還沒有弄清楚是什么原因造成的,但是殺死第二個進程解決了我們的問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM