是否可以让log4net将其日志文件相对于当前工作目录而不是应用程序所在的目录?
换句话说,如果我运行.. \ myapp.exe,我不希望日志文件在.. \我希望它们在。\
是否可以让log4net将其日志文件相对于当前工作目录而不是应用程序所在的目录?
换句话说,如果我运行.. \ myapp.exe,我不希望日志文件在.. \我希望它们在。\
我最终查看了log4net源,并确定我可以实现自己的扩展器,扩展FileAppender并覆盖File属性。
class CWDFileAppender : FileAppender
{
public override string File
{
set
{
base.File = Path.Combine(Directory.GetCurrentDirectory(), value);
}
}
}
我只是在配置中使用CWDFileAppender。
我最终查看了log4net源,并确定我可以实现自己的扩展器,扩展FileAppender并覆盖File属性。
class CWDFileAppender : FileAppender
{
public override string File
{
set
{
base.File = Path.Combine(Directory.GetCurrentDirectory(), value);
}
}
}
我只是在配置中使用CWDFileAppender。
根据配置文件不可能 这里。如果您从程序内部手动配置它,则可能:
public static log4net.Appender.IAppender CreateFileAppender(string name,
string fileName)
{
log4net.Appender.FileAppender appender = new
log4net.Appender.FileAppender();
appender.Name = name;
appender.File = fileName;
appender.AppendToFile = true;
log4net.Layout.PatternLayout layout = new
log4net.Layout.PatternLayout();
layout.ConversionPattern = "%d [%t] %-5p %c [%x] - %m%n";
layout.ActivateOptions();
appender.Layout = layout;
appender.ActivateOptions();
return appender;
}
然后,您可以将其与记录器关联,如下所示:
AddAppender("Log4net.MainForm", CreateFileAppender("FileAppender",
Path.Combine(Directory.GetCurrentDirectory(), "foo.log")));