ApplicationInsights OperationId пуст - PullRequest
       8

ApplicationInsights OperationId пуст

0 голосов
/ 07 октября 2018

Я реализую собственный регистратор ApplicationInsights и могу записывать все журналы в таких местах записи, как трассы, исключения и запросы, но OperationId пуст в трассировках и исключениях.

Вчера я использовал тот же код и получал OperationIdво всех таблицах.После этого я играл за многопоточный сценарий, который не работал хорошо.Теперь я снова начал с простого кода, но не вижу OperationId.

что не так в моем коде?

public static class Function2
{
    private static TelemetryClient telemetryClient = new TelemetryClient(new Microsoft.ApplicationInsights.Extensibility.TelemetryConfiguration
    {
        InstrumentationKey = "********-****-********-****"
    });

    [FunctionName("Function2")]
    public static HttpResponseMessage Run([HttpTrigger(AuthorizationLevel.Anonymous, "get", Route = null)]HttpRequestMessage req)
    {
        RequestTelemetry requestTelemetry = new RequestTelemetry { Name = "Function2" };
        var operation = telemetryClient.StartOperation(requestTelemetry);

        telemetryClient.TrackTrace("trace message", SeverityLevel.Error);
        telemetryClient.TrackException(new System.Exception("My custom exception"));


        operation.Telemetry.Success = true;
        telemetryClient.StopOperation(operation);

        return req.CreateResponse(HttpStatusCode.OK, "Hello ");
    }
}

1 Ответ

0 голосов
/ 09 октября 2018

Эта проблема очень сложная, она связана с настройкой клавиши инструментовки.Если вы используете Microsoft.ApplicationInsights.Extensibility.TelemetryConfiguration (вы использовали в своем коде) для установки ключа инструментария, то в insights приложения не будет ни одного operation_id.

Поэтому используйте эту строку кода для установки ключа инструментария:

TelemetryClient telemetryClient = new TelemetryClient() { InstrumentationKey = "your_key" };

Мой пример кода, как показано ниже, изменяет только метод настройки ключа инструментария:

public static class Function1
{

    private static TelemetryClient telemetryClient = new TelemetryClient() { InstrumentationKey = "your_key" };

    [FunctionName("Function2")]
    public static HttpResponseMessage Run([HttpTrigger(AuthorizationLevel.Anonymous, "get", Route = null)]HttpRequestMessage req)
    {
        RequestTelemetry requestTelemetry = new RequestTelemetry { Name = "Function211" };
        var operation = telemetryClient.StartOperation(requestTelemetry);

        telemetryClient.TrackTrace("trace message 111", SeverityLevel.Error);
        telemetryClient.TrackException(new System.Exception("My custom exception 111"));

        operation.Telemetry.Success = true;
        telemetryClient.StopOperation(operation);

        return req.CreateResponse(HttpStatusCode.OK, "Hello ");
    }
}

После выполнения вы можете увидеть идентификатор_операции для трассировки / исключения на портале Azure: enter image description here

...