У меня есть веб-приложение, в котором я реализовал ведение журнала (используя Common.Logging), теперь оно сохраняет сообщения журнала в базе данных. Но в одной части системы, процессе импорта, я хотел бы представить только сообщения журнала, относящиеся к этому процессу импорта (который был создан пользователем), а не накопленные сообщения журнала.
ниже вы видите код для моего ImportProcessor, который зависит от ILog (из Common.Loggning) и некоторых компонентов импорта, который также зависит от 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?