Quelqu'un a de l'expérience pour les deux? Comment s'empilent-ils les uns contre les autres?
Nous prévoyons d’utiliser l’un d’eux pour la connexion à une application d’entreprise.
Références:
EDIT: Nous n'avons aucune dépendance existante à nlog ou log4net.
J'ai récemment été chargé de "créer un prototype pour un projet à venir." Je n'avais aucune expérience de cadre de journalisation. J'ai effectué des recherches, parcouru des tutoriels, créé des applications pour jouets, etc. sur Log4Net, NLog et Enterprise Library pendant quelques jours. Nous sommes revenus 3 ou 4 semaines plus tard et les avons réunis dans une démonstration cohérente. Espérons que cela vous soit utile.
Ma recommandation pour notre projet est la suivante:
C'est basé sur ces résultats (opinions!):
Alors évidemment, j'aime bien le NLog jusqu'à présent. Pas assez pour l'utiliser malgré le fait d'avoir une autre solution disponible, cependant.
Le support et les mises à jour sont une considération clé qui n'a pas été beaucoup discutée.
Log4Net n'a pas été mis à jour depuis la publication de la version 1.2.10 le 19 avril 2006 .
En revanche, NLog a été activement pris en charge depuis 2006 publiera bientôt NLog 2.0 supportant de nombreuses plateformes qui n’existaient pas à la dernière mise à jour de log4net tels que:
Ayant récemment eu une expérience avec les deux frameworks, j'ai pensé pouvoir partager mon point de vue sur chaque framework.
On m'a demandé d'évaluer les infrastructures de journalisation pour une application Web existante. J'ai limité mes choix à NLog (v2.0) et log4net (v1.2.11) après avoir consulté divers forums en ligne. Voici mes conclusions:
Configurer/démarrer avec NLog est extrêmement simple. Vous parcourez le didacticiel de mise en route sur leur site Web et vous avez terminé. Vous avez une idée juste, comment ça pourrait être avec nlog. Le fichier de configuration est tellement intuitif que tout le monde peut comprendre la configuration. Par exemple: si vous souhaitez définir la connexion interne, vous définissez l'indicateur dans le nœud d'en-tête du fichier de configuration Nlog, où vous vous attendez. Dans log4net, vous définissez différents indicateurs dans la section appSettings de web.config.
Dans log4net, la journalisation interne ne génère pas d'horodatage gênant. Dans Nlog, vous obtenez un journal de Nice avec des horodatages. Je l'ai trouvé très utile dans mes évaluations.
Filtres dans log4net - Vous devriez vérifier ma question - filtre log4net - comment écrire et filtrer pour ignorer les messages de journalisation et si vous trouvez une réponse/solution à ce problème, merci de me le faire savoir. Je comprends, il existe une solution de contournement pour cette question, car vous pouvez écrire votre propre filtre personnalisé. Mais quelque chose qui n’est pas facilement disponible dans log4net.
Performance - J'ai enregistré environ 3000 messages de journal dans la base de données à l'aide d'une procédure stockée. J'ai utilisé simple for loop (int i = 0; i <3000; i ++ ... pour consigner le même message 3000 fois. Pour les écritures: log4net AdoAppender prenait presque le double de temps par rapport à NLog.
Log4net ne prend pas en charge l'appender asynchrone.
Pour moi, la comparaison était suffisante pour choisir NLog comme cadre de journalisation. :)
Pour ceux qui arrivent sur ce fil en retard, vous voudrez peut-être jeter un coup d'œil sur la bibliothèque de classes de base .Net (BCL) .Net. De nombreuses personnes ont manqué les modifications apportées entre .Net 1.1 et .Net 2.0 lors de l’introduction de la classe TraceSource (vers 2005).
L'utilisation de TraceSource est analogue à celle d'autres infrastructures de journalisation, avec un contrôle granulaire de la journalisation, une configuration dans app.config/web.config et un accès par programme, sans la surcharge du bloc d'applications d'entreprise.
Il existe également un certain nombre de comparaisons qui circulent: "log4net vs TraceSource"
Pour nous, la différence principale réside dans la performance globale ...
Examinez Logger.IsDebugEnabled
dans NLog par rapport à Log4Net. D'après nos tests, NLog génère moins de temps système et c'est ce que nous recherchons (à faible temps de latence).
A bientôt, Florian
Commencez par regarder le reste de votre pile.
Si vous utilisez NHibernate, il utilise directement Log4Net. D'autres cadres peuvent avoir d'autres enregistreurs spécifiques dont ils ont besoin.
Autre que cela: les deux fonctionnent bien.
J'ai moi-même opté pour Log4Net. Cela peut être difficile à configurer, et s’il n’est pas configuré correctement, il est également difficile de comprendre ce qui ne va pas. Mais vous pouvez lui faire faire presque tout ce que vous voulez d'un enregistreur.
Si vous n’avez pas de problème permanent avec Log4Net, voici un article que j’ai écrit sur la façon de le démarrer: http://elegantcode.com/2007/12/07/getting-started-with- log4net /
Bien .. J'ai utilisé la bibliothèque d'entreprise pour les tâches de journalisation de la base de données et maintenant je suis passé à NLog en raison d'un goulot d'étranglement des performances.
quelques informations de comparaison:
http://pauliusraila.blogspot.com/2010/10/solving-database-logging-bottlenecks.html
Je fais écho à ce qui précède et préfère nLog. Entlib est inutilement gonflé.
Re: Log4net Une chose qui me touche toujours avec log4net est d’oublier d’ajouter ce qui suit au fichier global.asax pour initier le composant:
log4net.Config.XmlConfigurator.Configure();
Si vous y allez ici , vous trouverez une matrice complète comprenant à la fois les bibliothèques NLog et Log4Net, ainsi que Enterprise Lib et d’autres produits.
Quelqu'un pourrait dire que la matrice est conçue de manière à souligner les caractéristiques de la seule bibliothèque commerciale présente dans la matrice. Je pense que c’est vrai, mais c’était quand même utile de conduire mon choix contre NLog.
Cordialement
Comme je l'ai remarqué, log4net verrouille ses fichiers de sortie pendant le fonctionnement de l'application, vous ne pouvez donc pas les supprimer. Sinon, ils sont similaires.
Donc je préfère le NLog.
Prise sans vergogne pour un projet open source que je lance, mais compte tenu de la discussion animée sur le fait que le framework de journalisation .NET soit plus actif, j'ai pensé envoyer un lien obligatoire vers Serilog .
Pour l’utiliser dans une application, Serilog est similaire à (et s’appuie beaucoup sur) log4net. Contrairement aux autres options de journalisation .NET, cependant, Serilog consiste à préserver la structure des événements de journalisation pour une analyse hors ligne. Quand tu écris:
Log.Information("The answer is {Answer}", 42);
La plupart des bibliothèques de journalisation rendent immédiatement le message en une chaîne. Serilog peut le faire aussi, mais il conserve la propriété { Answer: 42 }
afin que, ultérieurement, en utilisant l'un des nombreux magasins de données NoSQL, vous puissiez interroger correctement les événements en fonction de la valeur de Answer
.
Nous approchons d'une version 1.0 et prenons en charge toutes les plateformes modernes (.NET 4.5, Windows Store et Windows Phone 8).
J'appuie également NLog car cela fonctionne également avec du code non géré. Je suppose qu’il serait possible d’utiliser log4net et log4cxx ensemble, mais NLog gère les codes à la fois gérés et non gérés.
J'ai aussi examiné Common.Logging , une façade qui fait abstraction de l'api de journalisation, elle prend en charge log4net, NLog et Entreprise Library. Je ne pense pas que je l'utiliserai, mais j'aime bien la façon dont ils utilisent lambdas pour améliorer les performances lorsque la journalisation est désactivée (une fonctionnalité partagée avec NLog et probablement d'autres).
Vous pouvez également envisager Bloc de journalisation de la bibliothèque Microsoft Enterprise . Il vient avec Nice designer.
Je pense que le consensus général est que nlog est un peu plus facile à configurer et à utiliser. Les deux sont tout à fait capables, cependant.
D'après mon expérience, SmartInspect bat NLog et log4net.
Il est extrêmement facile à utiliser, la documentation est excellente et vous pouvez afficher et filtrer les messages précédemment enregistrés avec leur visionneuse de journaux interactive, ce qui constitue un avantage considérable dans le monde réel. .
Une des choses que j'aime bien, ce sont les vues à onglets des données, comme les onglets du navigateur dans Chrome. Chaque onglet peut fournir une vue filtrée différente du journal.