我有一个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相关的所有日志消息进行分组,您有什么好的建议吗?
答案 0 :(得分:1)
您可以尝试使用Enterprise Library Logging:
http://msdn.microsoft.com/en-us/library/dd139916.aspx
使用EntLib,日志可以订阅不同的事件。允许您将所有事件放在一个位置,同时将特定事件放在单独的日志中。