如何在log4net中以编程方式更改日志文件路径?

时间:2017-10-11 06:29:42

标签: c# .net logging log4net log4net-configuration

我正在使用%property%在Log4Net配置文件中设置输出文件路径。每次应用程序启动时,都会在APP数据文件夹中创建一个日志文件。我正在使用Composite rolling style滚动文件。

但现在我的要求是根据应用程序中的某些用户交互来滚动/更改文件路径。我怎样才能做到这一点,任何人都可以建议我实现这一目标。

  1. 如何使用c#代码滚动文件。预期行为类似于基于大小和日期的滚动。
  2. 在程序执行之间更改Log4Net 中的输出文件路径的 c#代码是什么?
  3. 如果我的要求不明确,请告诉我。

    感谢。

1 个答案:

答案 0 :(得分:2)

你有两个问题:

  1. 我不知道这是否可行。我想在滚动文件appender中滚动到下一个名称是私有的。您可以查看src以查看是否可以访问它。如果没有,您可以从RollingFileAppender继承并添加您自己的实现。您可以通过以下方式获取运行时的appender:
  2. 代码:

      LogManager.GetRepository().GetAppenders();
    
    1. 使用财产是正确的方法。您的配置应如下所示:
    2. 配置:

       <appender name="YourAppender" type="log4net.Appender.RollingFileAppender"> 
          <file type="log4net.Util.PatternString" value="~/App_Data/%property{LogName}" />
       </appender>
      

      重要的是type="log4net.Util.PatternString"。在初始化log4net之前设置属性。

      log4net.GlobalContext.Properties["LogName"] = name;