Настройка приложений 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");

Ответы на вопрос(2)

Ваш ответ на вопрос