50 votes

Traçage versus journalisation et comment log4net s'intègre-t-il?

Je me pose des questions sur ce qu'est la différence entre l'exploitation forestière et de traçabilité est.

Est la différence fondamentalement que le suivi est plus le journal détaillé de donner aux développeurs un outil pour déboguer les applications en cours d'exécution?

J'ai fait des expériences avec log4net et de faire de l'exploitation forestière. Maintenant je me demande si je devrais être en train de faire le traçage et si je pourrait/devrait utiliser log4net à cette fin. Devrais-je faire de traçage avec log4net et est-il un niveau de trace de log4net bûcherons? Dois-je utiliser un autre niveau de log de debug et trace fins ou est-il possible d'utiliser le même? Pouvez-vous donner un exemple simple sur comment je pourrais faire de journalisation et de suivi pour une méthode simple?

Edit: Malgré quelques réponses utiles ci-dessous, je suis toujours pas sûr de savoir comment je dois faire traçage rapport à l'exploitation forestière.

J'ai la méthode suivante dans ma couche et je veux ajouter un enregistrement/suivi pour elle. Je me demande comment le faire efficacement. Est la suivante méthode acceptable en termes de connexion/traçage? Si le journal des messages de type Info au lieu de Debug? Sont les messages de Débogage je suis journalisation considéré comme trace? Comment voulez-vous changer?


IEnumerable<Car> GetCars()
{
   try
   {
      logger.Debug("Getting cars");
      IEnumerable<Car> cars = CarAccessor.GetCars().ConvertAll(DataAccessToBusinessConverter);
      logger.Debug("Got total of " + cars.Count + " cars"); 
   } catch (Exception e) {
      logger.Error("Error when getting cars", e);
      throw new Exception("Unexpected error when getting cars");
   }
}

26voto

martin Points 796

La journalisation est le terme générique pour l'enregistrement des informations de traçage est la forme spécifique de l'enregistrement utilisé pour déboguer.

Dans .Net le Système.Diagnostics.Trace et du Système.Diagnostics.Debug objets permettent de journalisation simple pour un certain nombre de "écouteurs d'événement" que vous pouvez configurer dans l'application.config. Vous pouvez également utiliser TraceSwitches de configurer et de filtre (entre les erreurs et les info niveaux, par exemple).

private void TestMethod(string x)
{
    if(x.Length> 10)
    {
        Trace.Write("String was " + x.Length);
        throw new ArgumentException("String too long");
    }
}

Dans ASP.Net, il existe une version spéciale de Trace (Système d'.Web.TraceContext) sera écrit au bas de la page asp ou de Trace.axd. Dans ASP.Net 2+, il y a aussi une meilleure structure de journalisation appelé de Surveillance de la Santé.

Log4Net est plus riche et plus flexible de traçage ou l'enregistrement de la Trace, voire ASP Surveillance de la Santé. Comme Les Diagnostics.Oligo-vous configurer les écouteurs d'événement ("appenders") dans la configuration. Pour la simple traçage, l'utilisation est simple comme un exemple de Trace. La décision d'utiliser Log4Net est de savoir si vous avez des besoins plus complexes.

private void TestMethod(string x)
{
    Log.Info("String length is " + x.Length);
    if(x.Length> 10)
    {
        Log.Error("String was " + x.Length);
        throw new ArgumentException("String too long");
    }
}

13voto

Kevin Little Points 5406

IMO...

L'enregistrement doit pas être conçu pour le développement de débogage (mais inévitablement il est utilisé de cette façon)
L'enregistrement doit être conçu pour être opérationnel de surveillance et de dépannage de -- c'est sa raison d'être.

Le suivi doit être conçu pour le développement de débogage et d'optimisation des performances. Si dans le domaine, il peut être utiliser pour vraiment faible niveau opérationnel de dépannage, mais ce n'est pas son but principal

Compte tenu de cela, la plupart des approches couronnées de succès que j'ai vu (et conçus ou mis en œuvre) dans le passé, ne pas combiner les deux ensemble. Mieux vaut garder les deux outils distincts, chacun faisant un travail aussi bien que possible.

11voto

Bob Nadler Points 1959

log4net est bien adapté pour les deux. Nous faisons la distinction entre l'exploitation forestière qui est utile pour après la libération, de diagnostics et de "tracer" à des fins de développement par l'aide de la journalisation du DÉBOGAGE de niveau. Plus précisément, les développeurs de connecter leur sortie de suivi (des choses qui ne sont que d'intérêts au cours du développement) à l'aide d' Debug(). Notre développement de configuration permet de définir le Niveau de DÉBOGAGE:

<root>
        <level value="DEBUG" />
        ...
</root>

Avant la sortie du produit, le niveau est changé pour "INFO":

<level value="INFO" />

Cela supprime toutes les sorties de DÉBOGAGE à partir de la publication de la journalisation, mais conserve INFO/AVERTISSEMENT/d'ERREUR.

Il y a d'autres log4net des outils, des filtres de type hiérarchique (par espace de noms), l'exploitation, plusieurs cibles, etc., nous avons trouvé ces simple méthode très efficace.

8voto

Alois Kraus Points 136

L'enregistrement n'est pas de Traçage. Ces deux bibliothèques différentes avec des caractéristiques de performance différentes. En fait, j'ai écrit une bibliothèque de traçage par moi-même avec la propriété unique qu'il peut tracer automatiquement l'exception lorsque la méthode de traçage est activé gauche avec une exception. En outre, il est possible de résoudre de façon élégante le problème de déclencher des exceptions dans des endroits spécifiques dans votre code.

4voto

gbjbaanb Points 31045

Je dirais oui. L'abattage est la seule façon de déterminer ce qui s'est passé dans le passé - si un client appelle et dit quelque chose n'est pas arrivé comme prévu, sans un journal tout ce que vous pouvez faire est de hausser les épaules et d'essayer de reproduire l'erreur. Parfois, c'est impossible (en fonction de la complexité du logiciel et de la confiance sur les données du client).

Il y a aussi la question de l'exploitation pour l'audit, un fichier journal peut être écrite contenant des informations sur les activités de l'utilisateur - de sorte que vous pouvez l'utiliser pour réduire le nombre de possibilités pour résoudre un problème, ou même de vérifier les revendications d'utilisateur (si vous obtenez un rapport que le système est cassé, xyz n'a pas eu lieu, vous pouvez regarder dans les journaux pour trouver l'opérateur n'a pas pu démarrer le processus, ou n'a pas, cliquez sur l'option pour le faire fonctionner)

Puis il y a la journalisation pour les rapports, qui est ce que la plupart des gens pensent que la journalisation est pour.

Si vous pouvez adapter la sortie du journal puis mettre le tout dans les journaux et de réduire ou d'augmenter la quantité de données qui est écrit. Si vous pouvez modifier le niveau de sortie de manière dynamique, alors c'est parfait.

Vous pouvez utiliser n'importe quel moyen de l'écriture des journaux, sous réserve de problèmes de performances. - Je trouver de l'ajout d'un fichier texte est le meilleur, le plus portable et le plus facile à visualiser, et (très important), plus facile à récupérer quand vous en avez besoin.

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