gpt4 book ai didi

c# - 如何设置 Application Insights NLog 目标的上下文

转载 作者:太空宇宙 更新时间:2023-11-03 12:40:44 25 4
gpt4 key购买 nike

我在 WPF 应用程序中使用 Microsoft Application Insights,并使用 NLog 来记录异常和调试信息。因此,我将 Application Insights NLog Target 添加到应用程序中。但此 NLog 目标记录的所有事件都不包含 Azure 门户上的上下文数据。

使用 TelemetryClient 记录的其他事件包含这些数据。

 var telemetryClient = new TelemetryClient();
telemetryClient.InstrumentationKey = "xxx";
telemetryClient.Context.User.Id = Environment.UserName;
telemetryClient.Context.Session.Id = Guid.NewGuid().ToString();

//var config = new LoggingConfiguration();
ConfigurationItemFactory.Default.Targets.RegisterDefinition(
"ai",
typeof(ApplicationInsightsTarget)
);

ApplicationInsightsTarget aiTarget = new ApplicationInsightsTarget();
aiTarget.InstrumentationKey = "xxx";
aiTarget.Name = "ai";
LogManager.Configuration.AddTarget("ai", aiTarget);

LogManager.Configuration.AddRule(LogLevel.Info, LogLevel.Info, aiTarget);

LogManager.Configuration.Reload();
LogManager.ReconfigExistingLoggers();

我的问题是 - 是否也可以将此上下文数据用于 NLog 目标记录的事件?或者,如何为 NLog 设置上下文数据?

最佳答案

您可以使用 TelemetryInitializer 来确保创建的所有项目都获得您想要的上下文?

修改示例来自: http://apmtips.com/blog/2014/12/01/telemetry-initializers/

namespace ApmTips.Tools
{
using Microsoft.ApplicationInsights.Extensibility;
using Microsoft.Diagnostics.Tracing;
using System.Diagnostics;

public class ExtendedIDTelemetryInitializer : ITelemetryInitializer
{
public void Initialize(Microsoft.ApplicationInsights.Channel.ITelemetry telemetry)
{
telemetry.Context.[some field] = [some value];
}
}
}

您还需要注册该初始化程序等,相关说明在上面的帖子中,有多种方法可以实现。

(但不要使用ContextInitializer,它的命名与您想象的不同)并且: http://apmtips.com/blog/2015/06/09/do-not-use-context-initializers/

关于c# - 如何设置 Application Insights NLog 目标的上下文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39099582/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com