[英]How can I inject dependencies into a custom ILogger in asp.net core 2.0?
[英]Can I directly Inject ILogger without LoggerFactory
從 IoC 的角度來看,我們應該能夠輕松設置和選擇接口的實現。
如果我創建ILogger
自定義實現,是否可以將它直接注入控制器而不使用ILoggerFactory-ILoggerProvider-ILogger
結構?
通過這種方式,我可以減少設置開銷並更好地控制 Logger。 例如,我可以投射和訪問CustomProperty
。 相比之下,由ILoggerFactory-ILoggerProvider-ILogger
鏈創建的記錄器將維護一個ILogger
的集合,我無法再訪問我的CustomLogger
。
代碼如下所示。 這是一個可行的解決方案嗎?
定義自定義記錄器
public class CustomLogger : ILogger
{
public CustomPropertyType CustomProperty;
public CustomLogger(){...}
public IDisposable BeginScope<TState>(TState state){...}
public bool IsEnabled(LogLevel logLevel){...}
public void Log<TState>(
LogLevel logLevel,
EventId eventId,
TState state,
Exception exception,
Func<TState, Exception, string> formatter)
{
// Use some info from CustomProperty in while sending the log
}
}
設置依賴注入
public void ConfigureServices(IServiceCollection services)
{
services.AddScoped<ILogger, CustomLogger>();
//Other logic
}
使用CustomLogger
實現訪問ILogger
public ExampleController(ILogger logger)
{
this.logger = logger;
this.customProperty = (CustomLogger)logger.CustomProperty;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.