【问题标题】:How to change the Log file path programmatically in log4net?如何在 log4net 中以编程方式更改日志文件路径?
【发布时间】:2018-03-22 17:11:31
【问题描述】:

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

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

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

如果我的要求不清楚,请告诉我。

谢谢。

【问题讨论】:

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


    【解决方案1】:

    您有 2 个问题:

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

    代码:

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

    配置:

     <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;
    

    【讨论】:

    • 感谢您的回答,能否请您分享源位置以检查您的建议。确定该方法是私有的还是公共的会很有帮助。
    猜你喜欢
    • 1970-01-01
    • 2010-10-17
    • 2022-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多