[英]Log4Net on multiple nodes behind loadbalancer overwrite previous day rolling files
我們在一個 web 應用程序中使用 RollingFileAppender,該應用程序在多個節點上的負載均衡器后面運行。 我們注意到前幾天的日志通常很小,只有幾行,而當前的日志很大。 它不是 100% 一致的,大約五分之一的先前日志似乎是完整的日志(使用 2 個節點)。
我們認為兩個節點都必須將 log.log 重命名為前一個日期,並且它們之間的時間跨度最短。 最后一個這樣做的節點實際上會用第一個節點早些時候創建的新日志文件覆蓋以前的日志。
這是我們策划的配置:
<log4net>
<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
<lockingModel type="log4net.Appender.FileAppender+MinimalLock"/>
<file value="\\shared-path\log.log" />
<datePattern value="yyyy-MM-dd.'txt'"/>
<staticLogFileName value="true"/>
<appendToFile value="true"/>
<rollingStyle value="Date"/>
<maxSizeRollBackups value="10"/>
<maximumFileSize value="20MB"/>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %message%newline"/>
</layout>
</appender>
<root>
<level value="ALL"/>
<appender-ref ref="RollingLogFileAppender"/>
</root>
</log4net>
有什么簡單的方法可以防止這種情況發生嗎?
該問題可以通過設置<staticLogFileName value="false"/>
來解決。 在這種情況下,它不會將 log.log 重命名為格式化的存檔名稱,而只是為新日志創建一個新文件。
此解決方案的一個缺點是,任何 Tail 或監視工具現在都必須檢查目錄中的最新文件,而不是僅僅查看 static log.log。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.