Как сделать вывод 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")));