13

我正在使用Microsoft Application Insights我的 Web 应用程序。我使用 Application Insights TraceListener NuGet 包进行日志记录。那工作得很好。

现在我想切换到 NLog。我添加了Microsoft.ApplicationInsights.NLogTargetNuGet 包并在我的 NLog 配置文件中添加了一个新的 NLog 目标:

<target name='ai' xsi:type='ApplicationInsights' />

NLog 抛出异常:

Target cannot be found: 'ApplicationInsights'

我还尝试通过扩展添加程序集,如下所示:

<extensions>
    <add assembly="Microsoft.ApplicationInsights.NLogTarget" />
</extensions>    

但它也没有奏效。

有什么建议么?

4

3 回答 3

8

解决方案:(感谢@nemesv 的提示)

以编程方式添加目标

ConfigurationItemFactory.Default.Targets.RegisterDefinition(
    "ApplicationInsightsTarget", 
    typeof(Microsoft.ApplicationInsights.NLogTarget.ApplicationInsightsTarget)
);

并将其与

<target name='ai' xsi:type='ApplicationInsightsTarget' />
于 2014-04-30T06:54:49.687 回答
7

或者您可以以编程方式指定目标:

var config = new LoggingConfiguration();
ConfigurationItemFactory.Default.Targets.RegisterDefinition(
            "ai", 
            typeof(ApplicationInsightsTarget)
        );
ApplicationInsightsTarget aiTarget = new ApplicationInsightsTarget();
aiTarget.InstrumentationKey = "your_key";
aiTarget.Name = "ai";
config.AddTarget("ai", aiTarget);
LogManager.Configuration = config;
于 2016-03-18T11:48:32.327 回答
1

如果其他人对此感到困惑:正确的目标类型ApplicationInsightsTarget不是ApplicationInsights.

这工作正常:

<extensions>
    <add assembly="Microsoft.ApplicationInsights.NLogTarget" />
</extensions>    
<targets>
    <target name='ai' xsi:type='ApplicationInsightsTarget' />
</targets>

无需通过代码添加目标。

另请参阅:https ://github.com/microsoft/ApplicationInsights-dotnet/tree/main/LOGGING#nlog

于 2022-03-03T08:43:04.613 回答