C# 如何在azure功能中同时使用日志编写器和应用程序洞察?
我想将跟踪和其他事件发送到C# 如何在azure功能中同时使用日志编写器和应用程序洞察?,c#,.net,azure,azure-functions,azure-application-insights,C#,.net,Azure,Azure Functions,Azure Application Insights,我想将跟踪和其他事件发送到ILogger和应用程序洞察 我知道我可以简单地做到这一点: [FunctionName ("OnSomethingHttpTriggered")] public static async System.Threading.Tasks.Task RunAsync ([QueueTrigger ("myq", Connection = "StorageAccountConnection")] string payload, ILogger log) {
ILogger
和应用程序洞察
我知道我可以简单地做到这一点:
[FunctionName ("OnSomethingHttpTriggered")]
public static async System.Threading.Tasks.Task RunAsync ([QueueTrigger ("myq", Connection = "StorageAccountConnection")] string payload, ILogger log) {
var telemetry = new TelemetryClient {
InstrumentationKey = Environment.GetEnvironmentVariable ("APPINSIGHTS_INSTRUMENTATIONKEY")
};
log.LogInformation ($"C# Queue trigger function processed: {payload}");
telemetry.TrackEvent ($"C# Queue trigger function processed: {payload}");
var isPayloadValidSchema = SchemaValidator.IsValid (payload);
if (!isPayloadValidSchema) {
log.LogError ($"This visit is not valid {payload}");
telemetry.TrackEvent ($"This visit is not valid {payload}");
return;
}
}
但是正如您所看到的,对于ILogger
和TelemetryClient
,我需要每次将代码加倍
如何避免这种重复?我们不需要
TeletRyclient
来发送ILogger
的输出,一旦我们在应用程序设置中设置了APPINSIGHTS\u INSTRUMENTATIONKEY
(本地值为local.setting.json),默认情况下这些将在应用程序洞察中。我们使用teletryclient
发送。您是否可以在您自己的SuperLogger
对象中进行DI(类似于您对ILogger
所做的操作),该对象具有ILogger
和teletryclient
作为构造函数注入依赖项?然后在您自己的SuperLogger
中调用一个方法,然后调用这两个方法。一旦我们打开appinsights,ILogger输出默认发送到Application Insights,这就是您想要的吗?@JerryLiu是的。你是说我甚至不需要使用TeletRyclient
?@l--l--l--l--l--“我们真的不需要它,除非你有一些自定义事件要跟踪。