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

C# 如何使用自定义条件从Azure中删除日志?,c#,azure,azure-application-insights,serilog,azure-log-analytics,C#,Azure,Azure Application Insights,Serilog,Azure Log Analytics,我正在尝试使用一些自定义条件(自动或手动,目前无所谓)从Azure中删除日志,例如: 假设我想从Azure中删除所有日志,但在过去3天中发生的customEvent名称为“LogIn”的异常除外 有没有办法在Azure中做到这一点 提前谢谢 [我的背景] 我正在使用Asp.Net Core 3.1中的应用程序洞察,以及使用Serilog结构化日志记录的应用程序洞察 我将日志作为事件发送,然后根据这些数据对应用程序监控和警报进行自定义查询 Serilog调用的几个示例: _logger.De

我正在尝试使用一些自定义条件(自动或手动,目前无所谓)从Azure中删除日志,例如:

假设我想从Azure中删除所有日志,但在过去3天中发生的customEvent名称为“LogIn”的异常除外

有没有办法在Azure中做到这一点

提前谢谢


[我的背景]

我正在使用Asp.Net Core 3.1中的应用程序洞察,以及使用Serilog结构化日志记录的应用程序洞察

我将日志作为事件发送,然后根据这些数据对应用程序监控和警报进行自定义查询

Serilog调用的几个示例:

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

要从application insights中删除日志,唯一的方法是使用。但它也有一些局限性

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

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

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

请注意,在它成功返回后,向下滚动到页面底部,出现“operationId”。请写下来,您可以使用它通过检查清除状态

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

{
        "table": "exceptions",
        "filters":  [
          {
            "column": "the column name",
            "operator": "==",
            "value": "not LogIn"         
          }
        ]   
}
这里的限制是api现在不支持操作符
=,因此您需要删除customEvent名称不是“LogIn”的日志,请使用上面的筛选器。完全支持的运算符为


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

很抱歉,我写道我需要使用一些“自定义条件”来删除。。。。