Configurer RollingFileAppender Date en roulant par programme
-
03-07-2019 - |
Question
Je travaille sur la configuration d'un programme RollingFileAppender dans log4net. J'ai quelque chose comme ça actuellement:
RollingFileAppender fa = new RollingFileAppender();
fa.AppendToFile = true;
fa.RollingStyle = RollingFileAppender.RollingMode.Date;
fa.DatePattern = "yyyyMMdd";
fa.StaticLogFileName = true;
// Set more properties and add the appender to the root repository
Ceci refuse de rouler le journal en fonction de la date. Si je change le RollingStyle en Taille ou Composite, il sera alors lancé, mais uniquement en fonction de la taille et non de la date. J'ai essayé de supprimer StaticLogFileName et de jouer avec DatePattern sans succès.
Je dois configurer cela par programme, car je ne connais pas le nombre d'appendeurs au moment de l'exécution. Par conséquent, la configuration à l'aide de XML, que j'ai pu travailler par le passé, est irréprochable. Quelqu'un a des idées? Est-ce que je manque quelque chose?
La solution
Ce comportement est dû au fait que RollingFileAppender (et de nombreux autres appenders ainsi que des filtres) implémente l'interface IOptionHandler qui permet à un objet de différer l'activation de ses options jusqu'à ce que toutes les options aient été définies. Cela est nécessaire pour les composants dont les options associées restent ambiguës jusqu'à ce que tous soient définis ".
Lors de la configuration d'adaptateurs via des fichiers xml, vous n'avez pas à penser à l'activation car celle-ci est effectuée par le configurateur log4net.
Autres conseils
J'ai ajouté un appel à ActivateOptions () après avoir configuré l'appender, mais avant de l'ajouter à la hiérarchie, et cela semblait fonctionner. Pourquoi certaines options sont bloquées sans appel mais d’autres pas, c’est une question qui se pose un autre jour.