47 votes

Existe-t-il une façade de journalisation pour le monde .NET ?

Je suis un peu nouveau dans la pile .NET et je me demandais s'il existait un équivalent à slf4j pour la plate-forme .NET. Pour moi, la journalisation vers une façade et la possibilité d'interchanger les implémentations de journalisation selon les besoins sont tout simplement logiques. De plus, les API de wrapper disponibles dans slf4j m'ont sauvé de nombreuses fois lorsque j'avais besoin d'utiliser une bibliothèque tierce codée pour un seul cadre de journalisation que je n'utilisais pas.

Existe-t-il un projet qui fait office de façade entre des loggers comme log4net, nLog et Enterprise Library ? Existe-t-il des wrappers qui me permettent de raccourcir les appels à ces bibliothèques et de les diriger vers une autre bibliothèque ? Dois-je lancer un projet open source pour faire cela moi-même ? Cette question est-elle redondante parce que je ne connais pas la bonne façon de la poser ? À l'inverse, la façon courante de procéder consiste-t-elle à utiliser la programmation orientée aspect ?

0 votes

Bonne question - j'ai aussi ce problème. Il m'a juste fallu quelques minutes pour implémenter une interface ILog et une implémentation pour mon nLog préféré. Créons un projet OS - je me joindrais volontiers à vous :)

1 votes

C'est déjà fait. Voir ci-dessous le lien vers la journalisation commune pour .NET.

3 votes

Il existe également un FSL pour .NET : slf.codeplex.com basé sur le slf4j.

20voto

Tom Cabanski Points 4952

Excusez-moi, j'ai utilisé ce truc et j'ai oublié que ce n'était pas la version Apache. C'est en fait un logiciel libre qui fait partie d'un projet appelé infrastructure commune. Il est aussi appelé exploitation courante . Il fonctionne avec MS Enterprise, log4net et autres. Il fonctionne bien.

3 votes

Oui, Common Logging est LA façade de journalisation pour .NET.

0 votes

@Steven : C'est vrai, mais c'est tellement dépassé, malheureusement.

0 votes

Je déconseille même l'utilisation de façades en rondins. Une injection de dépendance correcte élimine l'utilisation de toute façade de journalisation.

10voto

Mauricio Scheffer Points 70470

Jetez un coup d'œil au château de Windsor Installation d'enregistrement .

Le code de base est aquí . Adaptateur Log4net aquí . Adaptateur NLog aquí .

Ajout d'un adaptateur pour Serilog .

Sans les adaptateurs, il est possible d'utiliser ConsoleLogger, DiagnosticsLogger, StreamLogger et NullLogger.

Il est assez facile d'écrire des adaptateurs pour tout autre cadre de journalisation.

1 votes

Castle.Services.Logging semble avoir disparu. J'obtiens un 404

1 votes

@Sam7 non, seuls les liens ont changé. Si vous trouvez quelque chose comme ça, pensez à chercher un peu sur Google pour trouver les nouveaux liens (comme je viens de le faire), puis soumettez une suggestion pour la réponse. Merci !

9voto

qes Points 11681

J'incorpore Facade de journalisation simple parce qu'il semble soutenir Le cadre de journalisation de The Object Guy pour .Net hors de la boîte.

6voto

shatl Points 510

Mise à jour pour .NET Core :

5voto

Sam7 Points 521

J'ai eu le même problème. Après avoir suivi les recommandations ci-dessus, j'ai découvert Ninject.Extensions.Logging

Ce qui est génial, car une façade a plus de sens en combinaison avec le DI de toute façon.

Il est livré avec des proxies pour NLog, NLog2 & log4net .

Voici un bel exemple d'utilisation en combinaison avec NLog : http://blog.tonysneed.com/2011/10/09/using-nlog-with-dependency-injection/

Je comprends que cette question date déjà de quelques années, mais par souci d'exhaustivité pour les autres utilisateurs, j'ai choisi de publier cette "solution".

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X