【问题标题】:How to delete logs from Azure using custom conditions?如何使用自定义条件从 Azure 中删除日志?
【发布时间】:2020-10-19 09:19:24
【问题描述】:

我正在尝试找到一种方法,使用一些自定义条件(自动或手动,现在没关系)从 Azure 中删除日志,例如:

假设我想从 Azure 中删除所有日志,除了过去 3 天内发生的异常,其 customEvent 名称为“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));

【问题讨论】:

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


【解决方案1】:

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

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

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

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

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

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

这里的限制是api现在不支持操作符!=,所以你需要删除customEvent名称不是“LogIn”的日志使用上面的过滤器。完全支持的运算符是here

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

【讨论】:

    猜你喜欢
    • 2013-06-25
    • 1970-01-01
    • 2022-10-14
    • 2016-05-09
    • 1970-01-01
    • 1970-01-01
    • 2020-04-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多