【问题标题】:Adding date in filename of RollingFileAppender files在 RollingFileAppender 文件的文件名中添加日期
【发布时间】:2015-03-05 08:02:41
【问题描述】:

您好,我现在使用 log4net 有一段时间了。这是我的记录器:

public static class LoggerSetup
{
    private static RollingFileAppender _roller;
    private static PatternLayout _patternLayout;

    static LoggerSetup()
    {
        // root config
        Hierarchy hierarchy = (Hierarchy)LogManager.GetRepository();
        hierarchy.Root.Level = Level.Debug;
        hierarchy.Configured = true;

        // prepare appender
        _roller = new RollingFileAppender();
        _patternLayout = new PatternLayout();
        _roller.Layout = _patternLayout;


        hierarchy.Root.AddAppender(_roller);

        _fileDirectory = "Log";
        Setup();
    }

    /// <summary>
    /// Location to save logfile
    /// </summary>
    public static string FileDirectory
    {
        get
        {
            return _fileDirectory;
        }
        set
        {
            _fileDirectory = value;
            Setup();

        }
    }
    private static string _fileDirectory;

    public static string DatePattern
    {
        get { return "_yyyy-MM-dd"; }
    }

    public static void Setup()
    {
        _roller.AppendToFile = true;
        _roller.File = FileDirectory + @"/" + "Log.log";
        _roller.StaticLogFileName = true;
        _roller.PreserveLogFileNameExtension = true;
        _roller.LockingModel = new FileAppender.MinimalLock();
        _roller.MaxSizeRollBackups = -1; //--> Logger doesnt delete files himself
        _roller.RollingStyle = RollingFileAppender.RollingMode.Composite;
        _roller.MaximumFileSize = "10KB";
        _roller.DatePattern = DatePattern;

        _patternLayout.ConversionPattern = "%date [%-5level] %message%newline";
        _patternLayout.ActivateOptions();

        _roller.ActivateOptions();

    }
}

如您所见,此 Appender 创建最大大小为 10K 的日志文件,并且每天都会滚动。此配置生成日志文件名如下:

  • Log.log_2015-03-04,

  • Log.1.log_2015-03-04,

  • Log.2.log_2015-03-04,
  • Log.log_2015-03-03,
  • Log.1.log_2015-03-03,
  • Log.2.log_2015-03-03

但是今天创建的日志是这样的

  • Log.log,
  • Log.1.log,
  • Log.2.log

我想要的是文件名看起来像这样:Log_yyyy-mm-dd_nr.log

那我该如何改变呢?

【问题讨论】:

    标签: c# log4net log4net-configuration log4net-appender


    【解决方案1】:

    我猜你已经将 StaticLogFileName 更改为 true:

    _roller.StaticLogFileName = true;
    

    当使用日期滚动样式时,它应该是错误的:

    _roller.StaticLogFileName = false;
    

    [tips-on-using-log4net-rollingfileappender]

    【讨论】:

      【解决方案2】:

      您应该将 StaticLogFileName 设置为 false,将 DatePattern 设置为 _yyyy-MM-dd.log,并将 File 设置为日期模式之前的路径,例如 Path.Combine(FileDirectory,"Log_")

      _roller.File = Path.Combine(FileDirectory,"Log_");
      _roller.StaticLogFileName = false;
      _roller.DatePattern="_yyyy-MM-dd.log"
      

      【讨论】:

      • 谢谢我去试试
      • 我使用该配置获得的文件看起来像 "Log__2015-03-06.loA.D..2" - "Log__yyyy-mm-dd. loA.D..nr".. 它几乎是正确的,我不明白扩展有什么问题
      【解决方案3】:

      我终于做到了:

              _roller.DatePattern = "yyyy-mm-dd";
              _roller.PreserveLogFileNameExtension = true;
              _roller.File = Path.Combine(FileDirectory,".log");
              _roller.StaticLogFileName = false;
      

      通过这些更改,我的日志文件如下所示:

      • 2015-03-06.log 最后一个
      • 2015-03-06.1.log

      感谢大家的帮助

      【讨论】:

        猜你喜欢
        • 2016-06-06
        • 2013-08-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-07-09
        • 1970-01-01
        • 2015-04-24
        相关资源
        最近更新 更多