Configuración de anexos log4net a través del archivo XML * y * código

Hoy comencé a jugar con log4net y, hasta ahora, me gusta mucho. Para preservar nuestra funcionalidad de registro actual, la aplicación necesita crear un nuevo archivo de registro cada vez que se inicia la aplicación. El nombre del archivo de registro tiene la marca de fecha y hora codificada. Actualmente, tengo log4net configurado a través de unXmlConfigurator, que funciona muy bien, excepto que el nombre de archivo para miRollingFileAppender está codificado en el archivo XML de configuración.

Me gustaría seguir usando elXmlConfigurator, pero después de llamarConfigure(), Quiero llegar alRollingFileAppender y, en código, cambie su valor de archivo para que sea una cadena generada dinámicamente. La muestradocumentación en línea parece estar abajo en este momento, pero he examinado la referencia del SDK y parece que podría usar elHeirarchy yGetAppenders() para hacer lo que necesito hacer. ¿Estoy en el camino correcto?

Ok, le hice una puñalada a esto y probé el siguiente código, que no funcionó:

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");

Respuestas a la pregunta(2)

Su respuesta a la pregunta