как сделать вывод log4net в текущий рабочий каталог? - PullRequest
11 голосов
/ 17 декабря 2009

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

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

Ответы [ 2 ]

14 голосов
/ 17 декабря 2009

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

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

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

2 голосов
/ 17 декабря 2009

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

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")));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...