ILogger各等级日志需使用哪种Azure Alert Signal创建警报?
问题描述
已为Web应用配置Application Insights,且能在Azure门户正常接收数据;同时完成了Application Insights Logging with .NET配置,当前可通过指标下的“exceptions”信号,为_logger.LogError(new Exception(), "some message")这类带异常的日志创建警报并触发邮件通知。
现需要为以下几种日志创建带邮件通知的警报:
_logger.LogInformation("testing LogInformation"); _logger.LogWarning("testing LogWarning"); _logger.LogDebug("testing LogDebug"); _logger.LogError("testing LogError w/ no exception");
此前尝试用指标信号找不到对应日志级别的选项,用“All Administrative Operations”信号也未触发警报,咨询应使用哪种信号创建这类警报。
解决方案
这类普通日志条目没有对应的预定义指标信号,需要使用**日志查询警报(Log Alert)**来实现,具体操作如下:
选择正确的信号类型
在Azure门户的Application Insights资源中,进入「警报」->「创建警报规则」,信号类型选择「日志」,再选择「自定义日志搜索」作为信号来源。编写对应日志级别的Kusto查询
不同日志级别对应traces表中的severityLevel字段值,对应关系:
- Debug/Verbose: 0
- Information: 1
- Warning: 2
- Error: 3
- Critical: 4
针对不同日志的查询示例:
- LogInformation:
traces | where severityLevel == 1 // 可根据需求添加过滤条件,比如特定消息内容 // | where message contains "testing LogInformation" | count
- LogWarning:
traces | where severityLevel == 2 | count
- LogDebug:
traces | where severityLevel == 0 | count
- 不带异常的LogError:
// 若需严格区分无异常的Error,可过滤掉关联了异常的条目 traces | where severityLevel == 3 | join kind=leftanti (exceptions) on operation_Id | count // 若无需区分,直接查询Error级别即可 // traces // | where severityLevel == 3 // | count
- 配置触发条件与通知
设置触发条件的阈值(比如计数大于0,即只要出现对应日志就触发),然后配置动作组,添加邮件通知的接收人即可。
内容的提问来源于stack exchange,提问作者chuckd
相关产品推荐
相关产品推荐

