2009-07-22 2 views
1

Я хочу знать, как динамически назначать имя файла, используя Log4net. Мое приложение таково, что 10 разных файлов должны быть динамически созданы на основе пользовательского ввода и позже на основе имени, которое требуется для соответствующего имени файла чтобы получить информацию и информацию, написанную емуlog4 net Назначение динамического имени файла

Например, в моем приложении, основанном на моем требовании к каждому XML-файлу, должен быть создан соответствующий файл журнала с тем же именем, что и файл xml .Later всякий раз, когда я делаю какие-либо изменения в xml файл должен быть в соответствующем файле журнала

Пожалуйста, помогите. Я возникаю проблемы, чтобы получить контроль над соответствующим журналом, чтобы написать это

ответ

3

еще не сделал этого, но есть, вероятно, несколько способов сделать это, так что это может быть не лучшим образом, но он должен работать

public OpenLogFile(string fileName) 
{ 
    log4net.Layout.ILayout layout = new log4net.Layout.PatternLayout("%d [%t]%-5p : - %m%n");;   
    log4net.Appender.FileAppender appender = new log4net.Appender.FileAppender(layout , filename); 
    appender.Threshold = log4net.Core.Level.Info; 
    log4net.Config.BasicConfigurator.Configure(appender); 
} 

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

Возможно, вам потребуется настроить макет или тип приложения.

Большой недостаток этого метода заключается в том, что вы теряете конфигурацию xml и возможность изменять настройки во время выполнения. Так что лучший способ может быть настроить Appender в файле XML, чтобы использовать свойство

например

file type="log4net.Util.PatternString" value="Logfiles\Log_For_%property{MyLogFileName}" 

Затем в коде можно изменить свойство

log4net.GlobalContext.Properties["MyLogFileName"] = ...; 

хитрый бит чтобы log4net перезагрузился. Я не читал документацию об этом, поэтому я не знаю, есть ли способ заставить перезагрузить. Он может работать, если вы просто вызовете log4net.Config.XmlConfigurator.ConfigureAndWatch еще раз. В противном случае он должен работать, если вы открыли xml-файл и сохранили его снова (без необходимости ничего менять)

Надеюсь, это поможет.

+0

Благодарим за внимание: log4net.GlobalContext.Properties ["MyLogFileName"] = ...; –

Смежные вопросы