如何将log4net输出到当前工作目录?

时间:2009-12-17 15:17:36

标签: log4net

是否可以让log4net将其日志文件相对于当前工作目录而不是应用程序所在的目录?

换句话说,如果我运行.. \ myapp.exe,我不希望日志文件在.. \我想要它们。\

2 个答案:

答案 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")));
相关问题