.net core 如何在.NET Core 3.1上获取应用程序见解以打印到控制台?

.net core 如何在.NET Core 3.1上获取应用程序见解以打印到控制台?,.net-core,azure-application-insights,.net Core,Azure Application Insights,我有一个.NET Core 3.1控制台应用程序,使用Host.CreateDefaultBuilder初始化。我已经正确地配置了它,并且我可以在Azure门户上看到TelemetryClient正确地上传了所有事件 出于诊断目的,我希望插入应用程序洞察,以便它将经过它的事件打印到控制台。理想情况下,我可以在打印时按我想要的方式格式化,但这是次要的 这可能吗 谢谢 如果有人有同样的问题,可以通过编写自己的处理器来解决。例如,此代码将准确地向控制台写入调试输出中显示的内容: using Syste

我有一个.NET Core 3.1控制台应用程序,使用Host.CreateDefaultBuilder初始化。我已经正确地配置了它,并且我可以在Azure门户上看到TelemetryClient正确地上传了所有事件

出于诊断目的,我希望插入应用程序洞察,以便它将经过它的事件打印到控制台。理想情况下,我可以在打印时按我想要的方式格式化,但这是次要的

这可能吗


谢谢

如果有人有同样的问题,可以通过编写自己的处理器来解决。例如,此代码将准确地向控制台写入调试输出中显示的内容:

using System;
using System.Text;
using Microsoft.ApplicationInsights.Channel;
using Microsoft.ApplicationInsights.Extensibility;
using Microsoft.ApplicationInsights.Extensibility.Implementation;

namespace YourNamespace
{
    public class TelemetryConsoleWritingProcessor : ITelemetryProcessor
    {
        private ITelemetryProcessor Next { get; set; }

        public TelemetryConsoleWritingProcessor(ITelemetryProcessor next) => Next = next;

        public void Process(ITelemetry item)
        {
            byte[] serializedItem = JsonSerializer.Serialize(new ITelemetry[] { item }, false);
            string jsonItem = Encoding.UTF8.GetString(serializedItem);
            Console.WriteLine($"Application Insights Telemetry: {jsonItem}");
            Next.Process(item);
        }
    }
}
并在配置遥测配置时执行以下操作进行注册:

options.TelemetryProcessorChainBuilder.Use(next => new TelemetryConsoleWritingProcessor(next));
虽然这是可行的,但对于控制台来说,输出非常详细。因此,我的个人实现针对Process()中的特定项类型,并仅为控制台自定义它们的格式


希望这有帮助。

如果有人有同样的问题,可以编写自己的处理器来解决。例如,此代码将准确地向控制台写入调试输出中显示的内容:

using System;
using System.Text;
using Microsoft.ApplicationInsights.Channel;
using Microsoft.ApplicationInsights.Extensibility;
using Microsoft.ApplicationInsights.Extensibility.Implementation;

namespace YourNamespace
{
    public class TelemetryConsoleWritingProcessor : ITelemetryProcessor
    {
        private ITelemetryProcessor Next { get; set; }

        public TelemetryConsoleWritingProcessor(ITelemetryProcessor next) => Next = next;

        public void Process(ITelemetry item)
        {
            byte[] serializedItem = JsonSerializer.Serialize(new ITelemetry[] { item }, false);
            string jsonItem = Encoding.UTF8.GetString(serializedItem);
            Console.WriteLine($"Application Insights Telemetry: {jsonItem}");
            Next.Process(item);
        }
    }
}
并在配置遥测配置时执行以下操作进行注册:

options.TelemetryProcessorChainBuilder.Use(next => new TelemetryConsoleWritingProcessor(next));
虽然这是可行的,但对于控制台来说,输出非常详细。因此,我的个人实现针对Process()中的特定项类型,并仅为控制台自定义它们的格式

希望这有帮助