C#Log4Net – 以编程方式动态更改日志目录

我阅读了有关以编程方式更改日志目录的大多数相关主题,但答案有点高级。

我的问题是尝试动态更改从我的C#应用​​程序保存日志文件的位置。 我有一个带有浏览按钮的文本框,可以选择保存的位置。

任何人都有一个想法,或者可以用一些代码指出我正确的方向? 我尝试过类似的想法,但似乎无法做到正确。

谢谢您的帮助。

杰夫

如果您希望将日志文件放在指定位置(将在运行时决定)可能是您的项目输出目录,那么您可以以这种方式配置.config文件条目

file type="log4net.Util.PatternString" value="%property{LogFileName}.txt" 

然后在调用log4net configure之前的代码中,设置如下所示的新路径

 log4net.GlobalContext.Properties["LogFileName"] = @"E:\file1"; //log file path log4net.Config.XmlConfigurator.Configure(); 

因此,如果您的要求如此频繁地更改日志目录,则每次更新属性值,然后再更新.Configure()

虽然提出的问题很古老,但我碰巧找到了一个非常好的解决方案,这对我有用。

 public static bool ChangeLogFileName(string appenderName, string newFilename) { var rootRepository = log4net.LogManager.GetRepository(); foreach (var appender in rootRepository.GetAppenders()) { if (appender.Name.Equals(appenderName) && appender is log4net.Appender.FileAppender) { var fileAppender = appender as log4net.Appender.FileAppender; fileAppender.File = newFilename; fileAppender.ActivateOptions(); return true; // Appender found and name changed to NewFilename } } return false; // appender not found }