是否可以让log4net将其日志文件相对于当前工作目录而不是应用程序所在的目录?
换句话说,如果我运行.. \ myapp.exe,我不希望日志文件在.. \我想要它们。\
答案 0 :(得分:14)
我最终查看了log4net源代码,并确定我可以实现扩展FileAppender的自己的appender并覆盖File属性。
class CWDFileAppender : FileAppender
{
public override string File
{
set
{
base.File = Path.Combine(Directory.GetCurrentDirectory(), value);
}
}
}
我只是在配置中使用CWDFileAppender。
答案 1 :(得分:2)
根据here,配置文件无法生成。如果您从程序内部手动配置它,则可以:
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")));