Настройка приложений log4net с помощью XML-файла * и * кода
Я начал играть с log4net сегодня и пока мне очень нравится. Чтобы сохранить текущие функциональные возможности ведения журнала, приложение должно создавать новый файл журнала при каждом запуске приложения. Имя файла журнала содержит дату и время, закодированные в нем. В настоящее время я настроил log4net черезXmlConfigurator
, который прекрасно работает, за исключением того, что имя файла для моегоRollingFileAppender
жестко запрограммирован в файле конфигурации XML.
Я хотел бы продолжать использоватьXmlConfigurator
, но после звонкаConfigure()
Хочу попасть наRollingFileAppender
и, в коде, измените его значение файла, чтобы быть динамически генерируемой строкой. Примердокументация онлайн кажется, сейчас не работает, но я просмотрел ссылку на SDK, и похоже, что я мог бы использоватьHeirarchy
а такжеGetAppenders()
делать то, что мне нужно. Я на правильном пути?
Хорошо, я попробовал это и попробовал следующий код, который не работал:
private static readonly ILog _log = LogManager.GetLogger(typeof(GUI));
// in the config file, I've set the filename to example.log, and it works
XmlConfigurator.Configure(new FileInfo("log_config.xml"));
Hierarchy hierarchy = LogManager.GetRepository() as Hierarchy;
if(hierarchy != null) {
// get the appenders
IAppender[] appenders = hierarchy.GetAppenders();
// change the filename for the RollingFileAppender
foreach( IAppender a in appenders) {
RollingFileAppender rfa = a as RollingFileAppender;
if(rfa == null)
continue;
rfa.File = "newfile.log"; // no runtime error, but doesn't work.
}
}
_log.Info("Application started");