【发布时间】:2013-12-09 19:14:13
【问题描述】:
基本上我有这个 log4net 的配置:
<?xml version="1.0" encoding="utf-8"?>
<log4net>
<root>
<level value="INFO" />
<appender-ref ref="RollingFileAppenderWithDeletion" />
</root>
<appender name="RollingFileAppenderWithDeletion" type="Namespace.RollingFileAppenderWithDeletion">
<file type="log4net.Util.PatternString" value="Logs/%property{LogName}/log.%property{ServiceName}-PID-%processid_%date{yyyyMMdd}.log" />
<appendToFile value="true" />
<rollingStyle value="Date" />
<datePattern value="yyyyMMMdd" />
<maxSizeRollBackups value="10" />
<maximumFileSize value="50MB" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%-5level %date{dd MMM yyyy HH:mm:ss,ffff} [%thread] %exception - %message%newline"/>
</layout>
</appender>
</log4net>
现在我有一个问题。每次 log4net 滚动日志文件时,它都不会更改日志文件的日期部分。例如,如果今天的日志文件是-log.MyServiceName-PID-1234_20131208.log,明天滚动文件后,文件名不会改变,所以我最终会得到一个回滚日志像这样的文件和活动日志文件
- log.QAService-PID-17584_20131208.log
- log.QAService-PID-17584_20131208.log2013Dec08
我想要的是
- log.QAService-PID-17584_20131209.log - 活动日志文件
- log.QAService-PID-17584_20131208.log2013Dec08 - 回滚
现在我遇到了this post,但这对我没有帮助。特别是,如果我从文件中删除日期模式,并将 preserveLogFileNameExtension 设置为 true,我将无法再看到活动日志文件中的日期部分。如果我进一步将 staticLogFileName 设置为 false,我将不再有活动日志文件,而是活动日志文件具有回滚的日志文件名称模式。
我在这里缺少什么?回滚后如何生成正确的日志文件名。
我正在使用 log4net 版本 1.2.10.0。不幸的是,我无法将其升级到新版本。
更新 这是 RollingFileAppenderWithDeletion 的自定义实现。它只是在日志文件滚动发生后清理旧的回滚文件。
public class RollingFileAppenderWithDeletion :RollingFileAppender
{
private IFileBurner m_fileBurner;
private const int checkMinutes = 1664;
public RollingFileAppenderWithDeletion()
{
m_fileBurner = FileBurner.Instance;
}
protected override void AdjustFileBeforeAppend()
{
base.AdjustFileBeforeAppend();
string path = base.File;
string directoryPath = Path.GetDirectoryName(path);
IDeletionRequirements requirements = new DeletionRequirements();
requirements.CheckEveryMinutes = checkMinutes;
requirements.DayLimit = MaxSizeRollBackups;
requirements.Directories = new List<string> { directoryPath };
m_fileBurner.ClearLogFiles(requirements);
}
}
【问题讨论】:
标签: c#-4.0 log4net log4net-configuration log4net-appender