在.Net core 3.1控制台应用程序中将NLOG与ApplicationInsightsTelemetryWorkerService配合使用

Using nlog with ApplicationInsightsTelemetryWorkerService in .net core 3.1 console app(在.Net core 3.1控制台应用程序中将NLOG与ApplicationInsightsTelemetryWorkerService配合使用)
本文介绍了在.Net core 3.1控制台应用程序中将NLOG与ApplicationInsightsTelemetryWorkerService配合使用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在配置一个具有应用程序洞察和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");
但是,当我运行这个应用程序时,我没有得到任何有关应用程序洞察的信息。我还注意到,在我的输出窗口中,我得到了一些以:

开头的日志
Application Insights Telemetry (unconfigured): .....

遗憾的是,没有太多文档可供参考。谁能给我指个方向。

非常感谢。

推荐答案

除了彼得·邦斯的回答,还有一件重要的事情你应该知道:

消息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包和版本。

这篇关于在.Net core 3.1控制台应用程序中将NLOG与ApplicationInsightsTelemetryWorkerService配合使用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!

相关文档推荐

DispatcherQueue null when trying to update Ui property in ViewModel(尝试更新ViewModel中的Ui属性时DispatcherQueue为空)
Drawing over all windows on multiple monitors(在多个监视器上绘制所有窗口)
Programmatically show the desktop(以编程方式显示桌面)
c# Generic Setlt;Tgt; implementation to access objects by type(按类型访问对象的C#泛型集实现)
InvalidOperationException When using Context Injection in ASP.Net Core(在ASP.NET核心中使用上下文注入时发生InvalidOperationException)
LINQ many-to-many relationship, how to write a correct WHERE clause?(LINQ多对多关系,如何写一个正确的WHERE子句?)