您可以使用ITelemetryInitializer 来实现。
方法一:
您可以定义一个自定义属性,您可以定义自定义时间戳,而不是直接更改时间戳:
如果使用此方法,在您实现 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 门户中的每个遥测数据中:
在构建查询生成图形时,可以使用这个自定义属性(注意:该属性是字符串类型,所以可以使用内置函数todatetime()进行转换它是日期时间类型)而不是使用时间戳。
方法二:
此方法尝试直接更改时间戳。我可以看到时间戳在本地更改,它不会发送到应用程序洞察力。所以目前,我建议你应该使用方法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));
}
}