【发布时间】:2018-11-19 01:27:03
【问题描述】:
我想将跟踪和其他事件发送到 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 的代码加倍。
如何避免这种重复?
【问题讨论】:
-
您是否可以在您自己的
SuperLogger对象中进行DI(类似于您对ILogger所做的我怀疑),该对象具有ILogger和TelemetryClient作为构造函数注入的依赖项?然后在你自己的SuperLogger中调用一个方法,然后调用这两个方法。 -
在我们打开 appinsights 后,默认情况下 ILogger 输出会发送到 Application Insights,这是您想要的吗?
-
@JerryLiu 是的。你是说我什至不需要使用
telemtryclient? -
@l--''''''---------''''''''''''' 我们真的不需要它,除非你有要跟踪的自定义事件。
标签: c# .net azure azure-functions azure-application-insights