我有一个记录到Azure Monitor的Azure函数,我正在记录自定义属性,以便我可以创建自己的列。我尝试了两种方法,我发现这样做如下
//method 1
_logger.LogInformation("{prop1} {prop2}", "value1", "value2");
//method 2
Dictionary<string, string> keyValuePairs = new Dictionary<string, string>()
{
{"prop1", "value1" },
{"prop2", "value2" }
};
_telemetryClient.TrackTrace("Message", keyValuePairs);
它们都可以将消息添加到App Insights中的Traces
表中,TrackTrace
更好地生成我可以按名称获得列的消息,因为它添加了一个customDimensions json体,我可以查询customDimensions['prop1']
,这很方便。
现在我的问题是我找不到Traces
表,当我去看我的日志分析工作区的日志,有一个FunctionAppLogs
表,但这并没有显示来自TrackTrace方法的日志,只有来自_logger的日志,但这并不是作为一个json体,我可以很容易地工作,只是正常的文本,甚至不是json格式。"prop1 prop2"
我怎么能得到我的日志属性在json格式,我可以很容易地工作,并在日志分析工作空间查询?
我的主机。Json设置文件
{
"version": "2.0",
"logging": {
"applicationInsights": {
"samplingExcludedTypes": "Request",
"samplingSettings": {
"isEnabled": true
}
},
"logLevel": {
"FunctionApps": "Information"
}
}
}
我在日志分析中发现了AppTraces表中的日志。自定义属性记录在称为属性的列下,它是一个json体,我可以很容易地做属性['prop1']在kql查询中有'value1'