Как сделать вывод log4net в текущий рабочий каталог?

Возможно ли, что log4net поместил свои файлы журнала относительно текущего рабочего каталога вместо каталога, в котором находится приложение?

Другими словами, если я запустил.. \myapp.exe, я не хочу, чтобы файлы журнала..\я хочу их.\

Ответ 1

Я закончил поиск источника log4net и решил, что могу реализовать свой собственный appender, который расширяет FileAppender и переопределяет свойство File.

class CWDFileAppender : FileAppender
{
    public override string File
    {
        set
        {
            base.File = Path.Combine(Directory.GetCurrentDirectory(), value);
        }
    }
}

Я просто использую CWDFileAppender в своей конфигурации.

Ответ 2

Невозможно из конфигурационного файла, как здесь. Это возможно, если вы настраиваете его вручную изнутри своей программы:

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")));