如何解决log4net RollingFileAppender 在应用程序重新启动后意外覆盖翻转文件 我尝试了什么?问题
我们有一个具有以下 log4net 配置 (v 2.0.12) 的应用程序:
<appender name="LogFileAppenderXML" type="log4net.Appender.RollingFileAppender">
<file value="D:\Logs\" />
<datePattern value="yyyy-MM-dd'_AppName.xml'" />
<preserveLogFileNameExtension value="true" />
<appendToFile value="true" />
<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
<rollingStyle value="Composite" />
<maxSizeRollBackups value="30" />
<maximumFileSize value="500KB" /> <-- in production this value is much larger; 500KB produces rolled-over files faster when reproducing this behavior
<staticLogFileName value="false" />
<layout type="log4net.Layout.XmlLayout"/>
</appender>
这意味着我们要按日期(天)和按大小(即 rollingStyle=Composite
)滚动。我们还希望将主动记录的日志文件的文件名保留为固定 (staticLogFileName
),以便我们可以使用查看器 (Log4View) 打开文件。在应用程序的单次运行中,一切都按预期工作。但是如果我重新启动应用程序,已经滚动的文件将被覆盖。
假设目标目录中已经存在以下文件:
- 2021-07-22_AppName.xml
- 2021-07-22_AppName.1.xml
- 2021-07-22_AppName.2.xml
- 2021-07-22_AppName.3.xml
如果我启动应用程序,新的日志条目将正确附加到主文件 2021-07-22_AppName.xml
。但是,一旦达到 maximumFileSize
中的大小,数据将写入 2021-07-22_AppName.1.xml,从而覆盖其中包含的现有数据。
我的期望是框架识别此初始状态并 1) 附加到主文件,以及 2) 选择一个继续翻转序列的文件名(在本例中为 4)。
我尝试了什么?
基于this answer,我尝试了以下
<file type="log4net.Util.PatternString" value="D:\\Logs\\.xml" />
<datePattern value="yyyy-MM-dd'_AppName'" />
也试过 conversionPattern
喜欢
<file type="log4net.Util.PatternString">
<conversionPattern value="D:\Logs\%date{yyyy-MM-dd}_AppName.xml" />
</file>
但它创建的文件的开头和结尾都带有日期(即 2021-07-22_AppName2021-07-22.xml
我已经看过 this question(我没有多个进程/实例记录到文件)。
问题
- 我正在尝试做的事情是否得到支持/可能?如果是这样,我错过了什么?
- 有没有办法将日期添加到
file.value
之前,还是总是将它添加到文件名末尾的扩展名之前?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。