代码之家  ›  专栏  ›  技术社区  ›  Carl Hörberg

组日志消息

  •  0
  • Carl Hörberg  · 技术社区  · 15 年前

    我有一个Web应用程序,其中我已经实现了日志记录(使用common.logging),它现在将日志消息保存到数据库中。但是在系统的一部分,即导入过程中,我只想显示与该导入过程相关的日志消息(由用户实例化),而不显示累积的日志消息。

    下面是我的importprocessor的代码,它依赖于ilog(来自common.logging)和一些导入组件,这些组件也依赖于ilog和其他一些东西。

    ILOG被注入一个DI(autofac),其中日志名被自动解析。

    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");            
        }
    }
    

    对于如何将与该importprocessor相关的所有日志消息分组,您有什么好的建议吗?

    1 回复  |  直到 15 年前
        1
  •  1
  •   Shiraz Bhaiji    15 年前

    您可以尝试使用企业库日志记录:

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

    使用entlib,日志可以订阅不同的事件。允许您将所有事件放在一个位置,同时将特定事件放在单独的日志中。