2010-11-07 23 views
3

En utilisant l'extrait ci-dessous qui utilise NLog, comment cela peut-il être fait en utilisant Enterprise Library 5.0 Logging?NLog to Enterprise Library

private Logger _logger; 
    public NLogger() {    
     _logger = LogManager.GetCurrentClassLogger(); 
    } 

    public void Info(string message) { 
     _logger.Info(message); 
    } 

    public void Warn(string message) { 
     _logger.Warn(message); 
    } 

Répondre

5

Vous cherchez quelque chose comme ceci:

private LogWriter _logger; 
public void EntLibLogger() 
{ 
    _logger = EnterpriseLibraryContainer.Current.GetInstance<LogWriter>(); ; 
} 

public void Info(string message) 
{ 
    LogEntry log = new LogEntry(); 
    log.Message = message; 
    log.Categories.Add("Information"); 
    log.Priority = Priority.Normal; 
    log.Severity = TraceEventType.Information; 
    _logger.Write(log); 
} 

public void Warn(string message) 
{ 
    LogEntry log = new LogEntry(); 
    log.Message = message; 
    log.Categories.Add("Warning"); 
    log.Priority = Priority.High; 
    log.Severity = TraceEventType.Warning; 
    _logger.Write(log); 
} 

public void Error(string message, int EventID, Dictionary<String,String> dictMessage) 
{ 
    LogEntry log = new LogEntry(); 
    log.Message = message; 
    log.Categories.Add("Error"); 
    log.Priority = Priority.Highest; 
    log.Severity = TraceEventType.Error; 
    log.EventId = EventID; 
    _logger.Write(log, dictMessage); 
} 

Configuration des paramètres de configuration app.config est le bit Checklist.

Ma recommandation est de rendre EventID globalement unique par appel (la documentation système inclut toujours la feuille de calcul avec ces nombres et le projet/fichier/ligne # à laquelle ils se trouvent). De cette façon, si l'application est en production, il est très probable que vous obtiendrez 1 ligne du journal et vous devrez être en mesure d'identifier l'origine de cet appel de journalisation dans la source. J'ajoute habituellement un dictionnaire de choses pour les variables locales et leurs valeurs à des fins de débogage. Un endroit souhaite que les valeurs précédentes soient consignées, de sorte que les événements d'audit incluent toujours un dictionnaire. De la façon dont il se connecte par défaut dans la base de données, Entlib stocke «catégorie» comme une chaîne dans les deux catégories et la table de journal. Gravité, priorité et EventID sont stockés en tant qu'ints. FormattedMessage est un gros bloc de données défini dans la section de formatage, et inclut également le contenu (les paires de valeurs clés) des dictionnaires - s'il est utilisé. Catégories sont une collection car il peut arriver que vous vouliez tout enregistrer dans la base de données, mais certains messages écrivent aussi dans le journal des événements et/ou envoient un message texte pour que leur fanny soit perpendiculaire au travail dès que possible. . Un endroit où je travaillais a utilisé un téléavertisseur Iridium pour indiquer à la personne désignée que les serveurs étaient en panne, car ils aimaient l'alpinisme, ils étaient fréquemment là où il n'y avait pas de couverture cellulaire.

+1

Merci pour le code et l'explication très détaillée. Les deux m'ont beaucoup aidé. – Mike