我通读了大多数有关以编程方式更改日志目录的相关主题,但答案有点先进。
我的问题是尝试动态更改从C#应用程序保存日志文件的位置。我有一个带有浏览按钮的文本框,可以选择保存的位置。
任何人都有想法或者可以用一些代码指出我正确的方向?我尝试过类似的想法,但似乎无法做到正确。
答案 0 :(得分:12)
如果您希望将日志文件放在指定位置,该位置将在运行时决定,可能是您的项目输出目录,那么您可以以这种方式配置.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()
。
答案 1 :(得分:0)
尽管提出的问题已经很老了,但是我碰巧找到了一个非常不错的解决方案here,对我有用。
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
}