2010-07-14 9 views
3

Ceci est ma situation. J'ai implémenté avec succès la journalisation sur le journal syslog distant en utilisant log4net. Cependant, pour autant que je puisse tester, si l'adresse IP de syslog n'est pas valide, tous les messages ne seront pas consignés nulle part et aucune exception n'est déclenchée. Cela ne fait rien. Par conséquent, ce serait bien d'avoir une sorte de repli. Disons que si l'écriture sur syslog échoue, écrivez dans un fichier ou dans une base de données. Est-ce encore possible avec log4net?Comment configurer log4net pour le repli

Ou devrais-je le configurer pour se connecter à deux emplacements en même temps?

Répondre

3

Je ne pense pas que vous pouvez le faire par configuration. Ce numéro est open in the log4net feature backlog.

Si votre application peut manger la surcharge de consignation, la solution la plus simple consisterait à se connecter à un autre appender par défaut.

Vous pouvez également essayer d'intégrer l'appender que vous utilisez dans un appender personnalisé et implémenter le scénario de secours si l'appender syslog lève une exception. Si ça ne les avale pas silencieusement.

De log4net FAQ:

Vous pouvez implémenter l'interface log4net.Appender.IAppender pour vous créer votre propre appender personnalisé. Nous vous recommandons d'étendre la classe log4net.Appender.AppenderSkeleton plutôt que de partir de zéro. Vous devez implémenter votre code personnalisé dans un assembly distinct de l'assembly log4net. Pour commencer, il est utile de regarder la source de log4net.Appender.TraceAppender comme un exemple de la quantité minimale de code requise pour faire fonctionner un appender.

La troisième option serait de regarder dans le code source de votre appender et de voir si vous pouvez le fourchonner et y faire les personnalisations nécessaires.

+0

J'espérais que cela puisse être fait. J'utilise une solution rapide et sale. Double enregistrement Est-ce que l'utilisateur RollingFileAppender bien. –

+0

c'est faux, il y a un moyen de résoudre ceci: [FallbackAppender] (https://code.google.com/p/log4netcontrib/wiki/FallbackAppender) et celui-ci dans [stackOverFLow] (http: // stackoverflow. com/questions/24607336/how-to-set-log4net-log-in-fichier-if-it-couldnt-écrire-dans-la-base de données # comment38129685_24607336) –

+0

@ RezaM.A ce n'est pas faux. La citation suggère exactement ce que FallbackAppender a implémenté. – Mixxiphoid