【问题标题】:Define log4net file appender DatePattern property programatically以编程方式定义 log4net 文件 appender 日期模式属性
【发布时间】:2015-08-24 12:49:40
【问题描述】:

我尝试像这样以编程方式实例化 log4net rollingfile appender:

private void GetFileAppender(string appenderName)
{
    // Get the logger repository hierarchy.  
    Hierarchy hierarchy = (Hierarchy)LogManager.GetRepository();

    /// Set the pattern layout for this appender
    PatternLayout patternLayout = new PatternLayout();
    patternLayout.ConversionPattern = "%date [%thread] %-5level %logger - %message%newline";
    patternLayout.ActivateOptions();

    /// Instantiate a new file appender
    this._fileAppender = new RollingFileAppender();
    this._fileAppender.Name = appenderName + "FileAppender";
    this._fileAppender.AppendToFile = true;
    this._fileAppender.Layout = patternLayout;
    this._fileAppender.File = "C:\\LogTest_";
    this._fileAppender.StaticLogFileName = false;
    this._fileAppender.DatePattern = "dd.MM.yyyy_hh'.log'";
    this._fileAppender.RollingStyle = RollingFileAppender.RollingMode.Size;
    this._fileAppender.MaximumFileSize = "10MB";
    this._fileAppender.MaxSizeRollBackups = 10;

    /// Define filter for this appender
    LevelRangeFilter levelRangeFilter = new LevelRangeFilter { LevelMin = Level.Debug, LevelMax = Level.Fatal, AcceptOnMatch = true };
    DenyAllFilter denyAllFilter = new log4net.Filter.DenyAllFilter();
    this._fileAppender.AddFilter(levelRangeFilter);
    this._fileAppender.AddFilter(denyAllFilter);
    this._fileAppender.ActivateOptions();
    hierarchy.Root.AddAppender(this._fileAppender);
    hierarchy.Root.Level = Level.Debug;
    hierarchy.Configured = true;
}

日志本身工作正常。我唯一的问题是文件名的模式不起作用。 我没有得到 DatePattern 属性定义的日志文件的 DateTime 模式和文件扩展名。 我只是得到“LogTest_”作为没有日期时间和扩展名的文件名。

如何解决?如果我在我的 App.config 中通过 XAML 配置它,它会分叉。但我想以编程方式解决这个问题。

已解决: 问题是我必须将 RollingStyle 设置为 Composite

this._fileAppender.RollingStyle = RollingFileAppender.RollingMode.Composite;

通过这样做,它采用属性 DatePattern 定义的模式。

【问题讨论】:

    标签: c# log4net rollingfileappender


    【解决方案1】:

    this post

    RollingFileAppender 中,您有DatePattern 属性:

    RollingFileAppender roller = new RollingFileAppender();
            roller.DatePattern = "yyyy.MM.dd";;
    

    【讨论】:

    • 如果您阅读了我的整篇文章,您会看到 DatePattern 属性已设置。
    猜你喜欢
    • 2014-02-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-11
    相关资源
    最近更新 更多