【问题标题】:NLog DiagnosticListener for DiagnosticSource用于诊断源的 NLog 诊断侦听器
【发布时间】:2018-10-10 16:28:47
【问题描述】:

是否有任何 NLog 包提供本地集成到日志 .NET DiagnosticSource 模型中?有点像 NLogTraceListener...

乍一看在谷歌上看不到任何东西。

【问题讨论】:

    标签: .net nlog system.diagnostics


    【解决方案1】:

    也许你可以只执行 DiagnosticListener.AllListeners.Subscribe 然后转发到 NLog-Logger:

                DiagnosticListener.AllListeners.Subscribe(delegate(DiagnosticListener listener)
                {
                    // subscribe to the Service Bus DiagnosticSource
                    if (listener.Name == "Microsoft.Azure.ServiceBus")
                    {
                        // receive event from Service Bus DiagnosticSource
                        listener.Subscribe(delegate(KeyValuePair<string, object> @event)
                        {
                            // Log operation details once it's done
                            if (!@event.Key.EndsWith("Stop"))
                                return;
                            var currentActivity = Activity.Current;
                            NLogLogger.Debug($"{currentActivity.OperationName} Duration: {currentActivity.Duration}\n\t{string.Join("\n\t", currentActivity.Tags)}");
                        });
                    }
                });
    

    https://github.com/dotnet/corefx/blob/master/src/System.Diagnostics.DiagnosticSource/src/DiagnosticSourceUsersGuide.md#discovery-of-diagnosticlisteners

    https://github.com/Microsoft/ApplicationInsights-dotnet-server/blob/develop/Src/Web/Web/AspNetDiagnosticTelemetryModule.cs

    设置观察者(你想要的监听器)的例子:

    https://github.com/NLog/NLog.DiagnosticSource/blob/master/test/NLog.DiagnosticSource.Tests/DiagnosticListenerTargetTests.cs

    监听来自目标的输出(相反的方式):

    https://github.com/NLog/NLog.DiagnosticSource/blob/master/src/NLog.DiagnosticSource/Targets/DiagnosticListenerTarget.cs

    【讨论】:

    • 我希望有一些更预先设定的东西,可以自动将 kvps 添加为上下文属性,但那样也不难。
    • 基本上,我正在寻找 ApplicationInsights DiagnosticListener 的功能 - 我希望将应用程序洞察遥测转到 NLog
    • @Jeff 也许您可以从 AspNetDiagnosticTelemetryModule 中找到灵感(更新的答案带有源链接)。还执行DiagnosticListener.AllListeners.Subscribe
    • 对 - 我不想自己重写所有代码。我只想从 DiagnosticSources 进行结构化日志记录
    • 有时拼砌自己的乐高积木会很有趣,而不仅仅是抱怨那些躺在地板上的乐高积木 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-10-03
    • 2023-03-19
    • 1970-01-01
    • 1970-01-01
    • 2011-02-10
    • 2015-04-30
    • 1970-01-01
    相关资源
    最近更新 更多