【问题标题】:how to use both the log writer and app insights within azure function?如何在 azure 函数中同时使用日志编写器和应用程序洞察力?
【发布时间】: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;
        }
    }

但正如您所见,我每次都需要将 ILoggerTelemetryClient 的代码加倍。

如何避免这种重复?

【问题讨论】:

  • 您是否可以在您自己的SuperLogger 对象中进行DI(类似于您对ILogger 所做的我怀疑),该对象具有ILoggerTelemetryClient 作为构造函数注入的依赖项?然后在你自己的SuperLogger 中调用一个方法,然后调用这两个方法。
  • 在我们打开 appinsights 后,默认情况下 ILogger 输出会发送到 Application Insights,这是您想要的吗?
  • @JerryLiu 是的。你是说我什至不需要使用telemtryclient
  • @l--''''''---------''''''''''''' 我们真的不需要它,除非你有要跟踪的自定义事件。

标签: c# .net azure azure-functions azure-application-insights


【解决方案1】:

我们不需要telemtryclient 发送ILogger 的输出,一旦我们在应用程序设置中设置APPINSIGHTS_INSTRUMENTATIONKEY(本地在local.setting.json 的值中),默认情况下这些将appear as traces 在Application Insights 中。我们使用telemtryclient 发送custom telemetry data

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-11-17
    • 1970-01-01
    • 1970-01-01
    • 2022-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多