我正在尝试找到一种使用一些自定义条件(自动或手动,现在并不重要)从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 表
等中删除日志。所有表格如下:
1.这里是使用purge Rest api从traces
表中删除日志的示例。导航到 purge api 页面,单击尝试按钮(按钮为绿色) -> 然后登录,并填写所有必要的信息 -> 在正文字段中,将过滤器设置为如下:
注意,成功返回后,向下滚动到页面底部,有“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/