应用洞察中自定义对象的属性在哪里
where are the properties of Custom object in app insights
我有一个这样的自定义对象。
public class Propertey
{
public string Key { get; set; }
public string Value { get; set; }
}
public class MonitoringEvent
{
public string AppName { get; set; }
public string Service { get; set; }
public string Fuction { get; set; }
public string CorrelationId { get; set; }
public List<Propertey> Properties { get; set; }
public string EventName { get; set; }
public DateTime TimeStamp { get; set; } = DateTime.UtcNow;
}
此对象是从系统外部填充的,在我的函数应用程序中,我正尝试将其记录在 App Insights 中。
[FunctionName("EventMonitoring")]
public async Task Run([ServiceBusTrigger(
"cta-event-monitoring",
"monitoring",
Connection = "ServiceBusConnectionString",
IsSessionsEnabled = false)]string mySbMsg, ILogger log)
{
try
{
MonitoringEvent me = JsonConvert.DeserializeObject<MonitoringEvent>(mySbMsg);
log.LogInformation("MonitoringEvent", me);
}
catch (Exception ex)
{
log.LogError("MonitoringEventError",ex);
}
}
当我看到应用洞察时,我无法在应用洞察中看到“AppName”、“Service”等属性。我在哪里可以找到它们?稍后我也希望能够查询它们。但我在应用洞察中看到的是这样的
您需要使用 log message template 登录。消息模板可以包含为其提供参数的占位符。使用名称作为占位符。在您的情况下,这意味着您需要添加一个命名模板 position
log.LogInformation("MonitoringEvent {Event}", me);
这将在应用程序见解跟踪中创建自定义 属性“事件”。
在您当前的代码中,您没有提供占位符,因此无法将参数放在某处并被忽略。
此外,请注意,应用程序洞察可能会在任何 object
参数上使用 .ToString()
,因此您最好的选择是只使用 mySbMsg
作为参数。
我有一个这样的自定义对象。
public class Propertey
{
public string Key { get; set; }
public string Value { get; set; }
}
public class MonitoringEvent
{
public string AppName { get; set; }
public string Service { get; set; }
public string Fuction { get; set; }
public string CorrelationId { get; set; }
public List<Propertey> Properties { get; set; }
public string EventName { get; set; }
public DateTime TimeStamp { get; set; } = DateTime.UtcNow;
}
此对象是从系统外部填充的,在我的函数应用程序中,我正尝试将其记录在 App Insights 中。
[FunctionName("EventMonitoring")]
public async Task Run([ServiceBusTrigger(
"cta-event-monitoring",
"monitoring",
Connection = "ServiceBusConnectionString",
IsSessionsEnabled = false)]string mySbMsg, ILogger log)
{
try
{
MonitoringEvent me = JsonConvert.DeserializeObject<MonitoringEvent>(mySbMsg);
log.LogInformation("MonitoringEvent", me);
}
catch (Exception ex)
{
log.LogError("MonitoringEventError",ex);
}
}
当我看到应用洞察时,我无法在应用洞察中看到“AppName”、“Service”等属性。我在哪里可以找到它们?稍后我也希望能够查询它们。但我在应用洞察中看到的是这样的
您需要使用 log message template 登录。消息模板可以包含为其提供参数的占位符。使用名称作为占位符。在您的情况下,这意味着您需要添加一个命名模板 position
log.LogInformation("MonitoringEvent {Event}", me);
这将在应用程序见解跟踪中创建自定义 属性“事件”。
在您当前的代码中,您没有提供占位符,因此无法将参数放在某处并被忽略。
此外,请注意,应用程序洞察可能会在任何 object
参数上使用 .ToString()
,因此您最好的选择是只使用 mySbMsg
作为参数。