c# - 如何使用自定义条件从 Azure 删除日志?

标签 c# azure azure-application-insights serilog azure-log-analytics

我正在尝试找到一种使用一些自定义条件(自动或手动,现在并不重要)从Azure删除日志的方法,例如:

假设我想从 Azure 中删除所有日志,但过去 3 天内发生的自定义事件名称为“LogIn”的异常除外。

有没有办法在 Azure 中执行此操作?

提前致谢!


[我的背景]

我将 Application Insights 与 Asp.Net Core 3.1 结合使用,并使用 Serilog 结构化日志记录来记录 Application Insights。

我将日志作为事件发送,然后根据该数据进行应用监控和警报的自定义查询。

Serilog 调用的一些示例:

  _logger.Debug("{randomValue} {temperature}", rng, temperature);
  _logger.Information("{_class_} {_function_}", nameof(UserService), nameof(IsLoggedIn));
  _logger.Error(ex, "{_function_}", nameof(LogIn));

最佳答案

要从应用程序洞察中删除日志,唯一的方法是使用 purge rest api 。但它有一些局限性。

请记住,您应该每次都从每个表中删除日志。例如,您应该分别从 traces 表/requests 表 等中删除日志。所有表格如下:

enter image description here

1.这里是使用purge Rest api从traces表中删除日志的示例。导航到 purge api 页面,单击尝试按钮(按钮为绿色) -> 然后登录,并填写所有必要的信息 -> 在正文字段中,将过滤器设置为如下:

enter image description here

注意,成功返回后,向下滚动到页面底部,有“operationId”。请记下,您可以通过Get Purge Status查看清除状态.

2.现在,您可以使用相同的方法从异常(exception)表中删除日志。根据您的需要,您应该进行更多的清除操作。首先,如上所述,通过指定 3 天前的时间戳来删除所有异常日志。其次,您可以根据过滤条件删除最近3天内事件名称不为“LogIn”的日志:

{
        "table": "exceptions",
        "filters":  [
          {
            "column": "the column name",
            "operator": "==",
            "value": "not LogIn"         
          }
        ]   
}

这里的限制是API现在不支持运算符!=,因此您需要删除customEvent名称不是“LogIn”的日志,使用上面的过滤器。完全支持的运算符是 here .

3.最后一件事是,由于某些原因,即使我们进行了清除,日志仍会在应用程序洞察中保留大约几天(7天或3天)。请使用Get Purge Status检查进度。

关于c# - 如何使用自定义条件从 Azure 删除日志?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62634266/

相关文章:

c# - 如何使用 REST API 筛选 AppInsights 自定义指标

azure - 通过 Azure REST API 查询应用程序见解

azure - 有没有办法使用 KQL 更新和显示 Azure 应用程序见解请求正文中的字段?

c# - 如何阻止 Visual Studio 2008 折叠操作数和运算符之间的空白?

c# - 如何显示本地文件夹uwp中的图像

azure - Azure.Messaging.ServiceBus.ServiceBusClient 的连接字符串

azure - Webhook 验证握手失败

c# - 如何调试 "The caller does not have permission"

c# - 在Elasticsearch的查询DSL中使用 `MatchPhrasePrefix`

c# - Azure TableEntity EntityResolver 用于调用和重用基本解析功能