我在json
设置中有一个日志记录部分:
{
"logging": {
"applicationInsights": {
"samplingSettings": {
"isEnabled": true,
"excludedTypes": "Request"
}
}
}
}
我需要在Startup
中注册它,以便能够在处理程序中使用。
到目前为止,我尝试了各种选择,但都不起作用:
选项1
builder.Services.AddApplicationInsightsTelemetry(); // returns error: IServicesCollection does not contain a definition for AddApplicationInsightsTelemetry
选项1更新
我在项目中添加了Microsoft.ApplicationInsights.AspNetCore
,所以AddApplicationInsightsTelemetry
现在可用,但ILogger
仍然提供null
。
选项2
builder.Services.AddLogging(logging =>
{
logging.AddConfiguration(hostingContext.GetSection("logging"));
}); // ILogger is null in handler
但找不到任何关于我的特殊案例的信息
如何在Startup
中注册ILogger
,以便继续使用我的应用程序json中的设置?
这是我正在使用的处理程序:
public class ExampleHandler : IRequestHandler<ExampleQuery, bool>
{
private readonly ILogger _log;
public ExampleHandler(ILogger log)
{
_log = log;
}
public async Task<bool> Handle(ExampleQuery request, CancellationToken cancellationToken)
{
// _log is null here;
return true;
}
}
-
安装
Microsoft.ApplicationInsights.AspNetCore
nuget包 -
解析类型记录器:
public class ExampleHandler : IRequestHandler<ExampleQuery, bool>
{
private readonly ILogger<ExampleHandler> _log;
public ExampleHandler(ILogger<ExampleHandler> log)
{
_log = log;
}
...
}