mtp*_*ltz 3 c# serilog .net-core asp.net-core
在这个应用程序中,我已经引入并设置了 Serilog,它适用于异常,并且我想将 Microsoft 的 Logger 与 Serilog 一起使用,但我似乎无法弄清楚如何在没有此错误的情况下将其 DI 到服务中 dotnet build.
我不确定我缺少什么让 ILogger 使用 Serilog 的实例?
错误dotnet build:
[13:56:21 FTL] Host terminated unexpectedly
System.AggregateException: Some services are not able to be constructed (Error while validating the service descriptor 'ServiceType: Unable to resolve service for type 'Microsoft.Extensions.Logging.ILogger' while attempting to activate 'App.Services.MyService'.)
Run Code Online (Sandbox Code Playgroud)
服务依赖注入:
[13:56:21 FTL] Host terminated unexpectedly
System.AggregateException: Some services are not able to be constructed (Error while validating the service descriptor 'ServiceType: Unable to resolve service for type 'Microsoft.Extensions.Logging.ILogger' while attempting to activate 'App.Services.MyService'.)
Run Code Online (Sandbox Code Playgroud)
执行
using Microsoft.Extensions.Logging;
public class MyService : BaseService
{
private readonly ILogger _logger;
public MyService(
ILogger logger)
: base(context, httpContext)
{
_logger = logger;
}
// ... Removed for brevity
}
Run Code Online (Sandbox Code Playgroud)
ILogger对 DI 不可用。您可以使用以下方法之一:
注入ILogger<TCategoryName>:
public class MyService : BaseService
{
private readonly ILogger _logger;
public MyService(ILogger<MyService> logger)
: base(context, httpContext)
{
_logger = logger;
}
// ...
}
Run Code Online (Sandbox Code Playgroud)
注入ILoggerFactory并使用其CreateLogger方法:
public class MyService : BaseService
{
private readonly ILogger _logger;
public MyService(ILoggerFactory loggerFactory)
: base(context, httpContext)
{
_logger = loggerFactory.CreateLogger("<YOUR_CATEGORY_NAME>");
}
// ...
}
Run Code Online (Sandbox Code Playgroud)
我推荐选项#1,除非你想完全控制日志类别。请参阅文档以了解有关这意味着什么的更多信息:
该类别包含在由该实例创建的每条日志消息中
ILogger。
| 归档时间: |
|
| 查看次数: |
2589 次 |
| 最近记录: |