J'ai commencé à jouer avec log4net aujourd'hui et jusqu'à présent, j'aime beaucoup. Afin de préserver notre fonctionnalité de journalisation actuelle, l'application doit créer un nouveau fichier journal à chaque démarrage de l'application. Le nom du fichier journal comporte l'horodatage. Actuellement, j'ai configuré log4net via un XmlConfigurator
, ce qui fonctionne très bien, sauf que le nom de fichier pour mon RollingFileAppender
est codé en dur dans le fichier XML de configuration.Configuration des appendeurs log4net via le fichier XML * et * code
Je voudrais continuer à utiliser le XmlConfigurator
, mais après avoir appelé Configure()
, je veux obtenir au RollingFileAppender
et, dans le code, modifiez la valeur de fichier à une chaîne généré dynamiquement. L'exemple documentation online semble être en panne en ce moment, mais j'ai parcouru la référence SDK, et il semble que je pourrais utiliser le Heirarchy
et GetAppenders()
pour faire ce que je dois faire. Suis-je sur la bonne voie?
Ok, je pris un coup de couteau à cela et essayé le code suivant, qui ne fonctionne pas:
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");
similaire tout à fait correct! Je vous remercie! – Dave