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?

Était-ce utile?

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 ".

Et ensuite: " ActivateOptions doit être appelée sur cet objet une fois les propriétés de configuration définies. Jusqu'à ce que ActivateOptions soit appelé, cet objet est dans un état non défini et ne doit pas être utilisé. "

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.

scroll top