使用Simple Injector我在记录器中遇到了一个共同的主题,我在记录器注入到的服务对象的构造函数中设置记录器名称。当服务写入日志时,可以通过此日志名轻松识别。
由于LogNames
将为每个服务设置,因此每个对象图请求的记录器应该是唯一的。
我想在构建图表时自动执行此操作,我已经四处寻找,ExpressionBuilt()
但我正在努力,但还没有得到我想要的工作 - 这甚至可能(或者想做的事情)?
我的构造函数代码如下(此LogName
属性设置代码在我的大多数服务中都很常见)。
谢谢,
克里斯
public interface ILogger
{
void LogMessage(string message, LogLevel level,
ILoggableCompany company = null);
string LogName {get; set; }
}
public BusinessUnitService
{
private readonly IUnitOfWork unitOfWork;
private readonly ILogger logger;
public BusinessUnitService(IUnitOfWork unitOfWork,
ILogger logger)
{
this.unitOfWork = unitOfWork;
this.logger = logger;
// it would be great if we could take away this
// line and set it automatically
this.logger.LogName = this.GetType().ToString();
}
}