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