Можно ли имитировать данные (метки времени) в Application Insights? - PullRequest
1 голос
/ 23 января 2020

Я использую Application Insights для просмотра Телеметрии для моего приложения. В качестве демонстрации я хочу заполнить App Insights данными, чтобы я мог создавать подробные графики и диаграммы, чтобы показать сценарий потенциального пользователя ios. Я хочу, чтобы мои данные занимали неделю, а то и месяцы, но у меня нет времени ждать так долго.

Можно ли вручную добавить метку времени / дату в мой вызов Телеметрии в моем приложении, например, на несколько месяцев? в прошлом, чтобы я мог получить информацию с того времени?

1 Ответ

3 голосов
/ 23 января 2020

Вы можете использовать ITelemetryInitializer для достижения этой цели.

Метод 1:

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

Если вы используете этот метод, в вашем пользовательском классе, который реализует ITelemetryInitializer, код, подобный приведенному ниже:

    public class MyTelemetryInitializer : ITelemetryInitializer
    {
        public void Initialize(ITelemetry telemetry)
        {
            DateTimeOffset dateTimeOffset = new DateTimeOffset(new DateTime(2020, 1, 10));

            //define a custom property, which is a date time
            telemetry.Context.GlobalProperties["Custom_timestamp"] = dateTimeOffset.ToString();

        }
     }

После выполнения кода вы можете видеть, что это свойство добавляется к каждому данные телеметрии на портале azure:

enter image description here

При создании запроса для создания графика вы можете использовать это пользовательское свойство ( Примечание : это свойство является строковым типом, поэтому вы можете использовать встроенную функцию todatetime() для преобразования его в тип даты-времени) вместо использования метки времени.

Метод 2:

Этот метод пытается напрямую изменить метку времени. Я вижу, что временная метка изменяется локально, она не отправляет приложениям идеи. Поэтому в настоящее время я предлагаю вам использовать метод 1.

Код, подобный приведенному ниже:

public class MyTelemetryInitializer : ITelemetryInitializer
{
    public void Initialize(ITelemetry telemetry)
    {
        //try to directly change the Timestamp, it changes successfully in local(in visual studio), but it does not send to application insights.
        telemetry.Timestamp = new DateTimeOffset(new DateTime(2020, 1, 10));

    }
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...