2009-07-30 11 views
0

J'ai reçu une application Web dans laquelle j'ai implémenté la consignation (en utilisant Common.Logging), il enregistre maintenant les messages de journal dans la base de données. Mais dans une partie du système, un processus d'importation, je voudrais présenter uniquement les messages de journal liés à ce processus d'importation (que l'utilisateur a instancié) et non les messages de journal accumulés.Messages de groupe

ci-dessous vous voyez le code de mon ImportProcessor, qui dépend ILog (de Common.Loggning) et certains composants à l'importation, qui dépend aussi ILog et quelques autres trucs ..

ILog est injecté avec une DI (autofac) où le nom de log est automatiquement résolu.

public class ImportProcessor 
{ 
    private readonly ILog log; 
    private readonly IImportFetcher fetcher; 
    private readonly IImportFormatter formatter; 
    private readonly IEnumerable<IImportFilter> filters; 
    private readonly IEnumerable<IImportExporter> exporters; 

    internal ImportProcessor(ILog log, IImportFetcher fetcher, IImportFormatter formatter, IEnumerable<IImportFilter> filters, IEnumerable<IImportExporter> exporters) 
    { 
     this.log = log; 
     this.fetcher = fetcher; 
     this.formatter = formatter; 
     this.filters = filters; 
     this.exporters = exporters; 
    } 

    public void Execute() 
    { 
     log.Info("Import starts"); 

     var rawdata = fetcher.Fetch(); 
     var importDatas = formatter.Transform(rawdata); 

     foreach (var filter in filters) 
     { 
      importDatas = filter.Filter(importDatas); 
     } 

     foreach (var exporter in exporters) 
     { 
      exporter.Export(importDatas); 
     } 

     log.Info("Import done");    
    } 
} 

Avez-vous une bonne suggestion sur la façon de grouper tous les messages de journal liés à ce ImportProcessor?

Répondre

1

Vous pouvez essayer d'utiliser la journalisation Enterprise Library:

http://msdn.microsoft.com/en-us/library/dd139916.aspx

En utilisant EntLib, les journaux peuvent souscrire à différents événements. Vous permettant de placer tous les événements à un endroit, tout en plaçant des événements spécifiques dans un journal séparé.