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

Ven*_*kat 5 .net c# logging log4net log4net-configuration

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

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

  1. 如何在c#代码中滚动文件.预期行为类似于基于大小和日期的滚动.
  2. 在程序执行期间,在Log4Net更改输出文件路径c#代码是什么?

如果我的要求不明确,请告诉我.

谢谢.

Pet*_*ter 4

您有 2 个问题:

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

代码:

  LogManager.GetRepository().GetAppenders();
Run Code Online (Sandbox Code Playgroud)
  1. 使用财产才是正确的方法。您的配置应该如下所示:

配置:

 <appender name="YourAppender" type="log4net.Appender.RollingFileAppender"> 
    <file type="log4net.Util.PatternString" value="~/App_Data/%property{LogName}" />
 </appender>
Run Code Online (Sandbox Code Playgroud)

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

log4net.GlobalContext.Properties["LogName"] = name;
Run Code Online (Sandbox Code Playgroud)