分组日志消息

时间:2009-07-30 12:52:03

标签: c# architecture

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

下面你看到我的ImportProcessor的代码,它依赖于ILog(来自Common.Loggning)和一些导入组件,这些组件也依赖于ILog和其他一些东西..

ILog注入DI(autofac),其中Logname自动解析。

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 个答案:

答案 0 :(得分:1)

您可以尝试使用Enterprise Library Logging:

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

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