在 .net core 3.1 控制台应用程序中将 nlog 与 ApplicationInsightsTelemetryWorkerService 结合使用
Using nlog with ApplicationInsightsTelemetryWorkerService in .net core 3.1 console app
我正在使用应用程序洞察和 nlog 配置 .net core 3 控制台应用程序
我的代码配置如下
Program.cs
.ConfigureLogging((hostingContext, logging) =>
{
logging.ClearProviders();
logging.AddConfiguration(hostingContext.Configuration.GetSection("Logging"));
logging.AddNLog(NLog.LogManager.LoadConfiguration("nlog.config").Configuration);
})
.ConfigureServices((hostContext, services) =>
{
services.SetupConfiguration(hostContext.Configuration);
services.AddApplicationInsightsTelemetryWorkerService("--AI-Key--");
在我的 nlog.config 我有
<extensions>
<add assembly="NLog.Web.AspNetCore"/>
<add assembly="Microsoft.ApplicationInsights.NLogTarget" />
</extensions>
<!-- the targets to write to -->
<targets>
<target name="Console" xsi:type="Console" layout="${longdate} ${level} ${message}"/>
<target xsi:type="ApplicationInsightsTarget" name="appInsights" />
</targets>
<!-- rules to map from logger name to target -->
<rules>
<!--All logs, including from Microsoft-->
<logger name="*" minlevel="Trace" writeTo="Console" />
<logger name="*" minlevel="Trace" writeTo="appInsights" />
</rules>
在appsettings.json我有
"Logging": {
"LogLevel": {
"Default": "Debug"
}
},
"ApplicationInsights": {
"InstrumentationKey": "--AI-Key--"
},
在我的代码中,我使用构造函数注入来获取记录器,然后
_logger.LogDebug("something");
然而,当我 运行 这样做时,我在应用程序洞察中没有得到任何东西。我还注意到在我的输出中 window 我得到了一些以以下开头的日志:
Application Insights Telemetry (unconfigured): .....
不幸的是,没有太多的文档可以继续。谁能给我指出正确的方向。
非常感谢。
请注意,为 Application Insights 设置日志级别是在不同级别完成的,方法是使用日志记录部分中名为 ApplicationInsights 的部分:
"Logging": {
"LogLevel": {
"Default": "Debug",
"ApplicationInsights"
"LogLevel": {
"Default": "Debug"
}
}
},
"ApplicationInsights": {
"InstrumentationKey": "--AI-Key--"
}
因此,在您当前的设置下,您不会收到调试级别的消息。
除了 peter Bons 的回答之外,还有一件重要的事情你应该知道:
消息Application Insights Telemetry (unconfigured): .....
表示AI-key没有正确配置,所以你看不到数据流入appInsights。
请尝试在nlog.config
中添加AI-key,如下所示:
<targets>
<target name="Console" xsi:type="Console" layout="${longdate} ${level} ${message}"/>
<target xsi:type="ApplicationInsightsTarget" name="appInsights">
<instrumentationKey>your_AI_Key</instrumentationKey>
</target>
</targets>
如果不在 nlog.config 中添加 AI_Key,我可以重现您的问题;但如果在 nlog.config.
中添加 AI_Key 则工作正常
如果问题仍然存在,请提供有效的示例代码以及这些 nuget 包和版本。
我正在使用应用程序洞察和 nlog 配置 .net core 3 控制台应用程序
我的代码配置如下
Program.cs
.ConfigureLogging((hostingContext, logging) =>
{
logging.ClearProviders();
logging.AddConfiguration(hostingContext.Configuration.GetSection("Logging"));
logging.AddNLog(NLog.LogManager.LoadConfiguration("nlog.config").Configuration);
})
.ConfigureServices((hostContext, services) =>
{
services.SetupConfiguration(hostContext.Configuration);
services.AddApplicationInsightsTelemetryWorkerService("--AI-Key--");
在我的 nlog.config 我有
<extensions>
<add assembly="NLog.Web.AspNetCore"/>
<add assembly="Microsoft.ApplicationInsights.NLogTarget" />
</extensions>
<!-- the targets to write to -->
<targets>
<target name="Console" xsi:type="Console" layout="${longdate} ${level} ${message}"/>
<target xsi:type="ApplicationInsightsTarget" name="appInsights" />
</targets>
<!-- rules to map from logger name to target -->
<rules>
<!--All logs, including from Microsoft-->
<logger name="*" minlevel="Trace" writeTo="Console" />
<logger name="*" minlevel="Trace" writeTo="appInsights" />
</rules>
在appsettings.json我有
"Logging": {
"LogLevel": {
"Default": "Debug"
}
},
"ApplicationInsights": {
"InstrumentationKey": "--AI-Key--"
},
在我的代码中,我使用构造函数注入来获取记录器,然后
_logger.LogDebug("something");
然而,当我 运行 这样做时,我在应用程序洞察中没有得到任何东西。我还注意到在我的输出中 window 我得到了一些以以下开头的日志:
Application Insights Telemetry (unconfigured): .....
不幸的是,没有太多的文档可以继续。谁能给我指出正确的方向。
非常感谢。
请注意,为 Application Insights 设置日志级别是在不同级别完成的,方法是使用日志记录部分中名为 ApplicationInsights 的部分:
"Logging": {
"LogLevel": {
"Default": "Debug",
"ApplicationInsights"
"LogLevel": {
"Default": "Debug"
}
}
},
"ApplicationInsights": {
"InstrumentationKey": "--AI-Key--"
}
因此,在您当前的设置下,您不会收到调试级别的消息。
除了 peter Bons 的回答之外,还有一件重要的事情你应该知道:
消息Application Insights Telemetry (unconfigured): .....
表示AI-key没有正确配置,所以你看不到数据流入appInsights。
请尝试在nlog.config
中添加AI-key,如下所示:
<targets>
<target name="Console" xsi:type="Console" layout="${longdate} ${level} ${message}"/>
<target xsi:type="ApplicationInsightsTarget" name="appInsights">
<instrumentationKey>your_AI_Key</instrumentationKey>
</target>
</targets>
如果不在 nlog.config 中添加 AI_Key,我可以重现您的问题;但如果在 nlog.config.
中添加 AI_Key 则工作正常如果问题仍然存在,请提供有效的示例代码以及这些 nuget 包和版本。