【问题标题】:Log4net Configuration with Static File Names But Archives with Date in Names具有静态文件名但名称中包含日期的存档的 Log4net 配置
【发布时间】:2018-01-18 05:30:27
【问题描述】:

我想将 log4net 配置为在“logs”目录下有 2 个不同的活动日志文件(比如说 debug.log 和 error.log),并每天将它们滚动到以日期命名的目录(yyyyMMdd)并更改名称通过在文件名称中添加日期来创建文件。 这是我想要的示例目录结构输出:

logs/
logs/debug.log
logs/error.log
logs/20180117/debug.log_20180117
logs/20180117/error.log_20180117
logs/20180116/debug.log_20180116
logs/20180116/error.log_20180116
...

log4net 可以做到这一点吗?如果是,请分享配置。

【问题讨论】:

标签: c# log4net log4net-configuration


【解决方案1】:

您将需要自定义滚动附加程序来处理您的独特需求。

首先,您将从 RollingFileAppender 创建自定义 appender,覆盖 AdjustFileBeforeAppend() 方法,如下所示

public class CustomRollingAppender : RollingFileAppender
{
    DateTime next = DateTime.Today;

    public CustomRollingAppender()
    {
    }

    protected override void AdjustFileBeforeAppend()
    {
        string file = File;
        DateTime newDt = DateTime.Today;
        if (next < newDt)
        {
            next = newDt.AddDays(1);

            string rollDir = Path.Combine(Path.GetDirectoryName(file), DateTime.Today.ToString("yyyyMMdd"));
            Directory.CreateDirectory(rollDir);
            string toFile = Path.Combine(rollDir, String.Format("{0}_{1}", Path.GetFileName(file), DateTime.Today.ToString("yyyyMMdd")));

            this.CloseFile();
            RollFile(file, toFile);
            SafeOpenFile(File, false);
        }
        base.AdjustFileBeforeAppend();
    }
}

最后在app.config中配置如下

    <appender name="FileAppender" type="Log4NetTest1.CustomRollingAppender">
        <file value="logs/error.log" />
        <appendToFile value="true" />
        <layout type="log4net.Layout.PatternLayout">
            <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] – %message%newline" />
        </layout>
        <preserveLogFileNameExtension value="true" />
    </appender>

PS:并非100%测试,请在投入PROD前彻底测试。

希望对你有帮助。

【讨论】:

    猜你喜欢
    • 2010-11-12
    • 1970-01-01
    • 2021-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-19
    • 1970-01-01
    相关资源
    最近更新 更多