как Вы заставляете log4net произвести к текущему рабочему каталогу?

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

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

11
задан Ken Goodridge 17 December 2009 в 15:17
поделиться

2 ответа

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

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

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

14
ответ дан 3 December 2019 в 07:38
поделиться

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

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")));
2
ответ дан 3 December 2019 в 07:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: