Configurando anexos do log4net via arquivo XML * e * código
Comecei a brincar com o log4net hoje e até agora, eu realmente gosto. Para preservar nossa funcionalidade de log atual, o aplicativo precisa criar um novo arquivo de log sempre que o aplicativo é iniciado. O nome do arquivo de log possui a data e a hora codificadas. Atualmente, eu tenho o log4net configurado através de umXmlConfigurator
, o que funciona muito bem, exceto que o nome do arquivo para o meuRollingFileAppender
é codificado no arquivo XML de configuração.
Eu gostaria de continuar usando oXmlConfigurator
, mas depois de ligarConfigure()
, Eu quero chegar noRollingFileAppender
e, no código, altere o valor do arquivo para ser uma sequência gerada dinamicamente. A amostradocumentação online parece estar inoperante agora, mas examinei a referência do SDK e parece que eu poderia usar oHeirarchy
eGetAppenders()
para fazer o que eu preciso fazer. Estou no caminho certo?
Ok, fiz uma facada nisso e tentei o seguinte código, que não funcionou:
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");