AWS CloudWatch - 如何删除默认登录 .NET Core 的 LogLevel 和 Class?

科内

我已成功将来自 .NET Core API 的消息记录到 AWS CloudWatch。

但是,我发现该消息会自动包含 LogLevel 和打印日志的类,如下所示:

[Information] Infra.Logging: 
{
    "id": "001",
    "message": "Received Get Data Request",
    "logLevel": "Information"
}

我想从消息中删除[Information]& Infra.Logging我尝试将 appsettings 配置如下:

"Logging": {
 "IncludeLogLevel": false,
 "IncludeCategory": false,
 "IncludeNewline": false,
 "IncludeException": false,
 "IncludeEventId": false,
 "IncludeScopes": false,
 "LogLevel": {
   "Default": "Trace",
   "System": "Information",
   "Microsoft": "Information"
 }
}

但它不起作用。有什么方法可以删除自动添加到@messageCloudWatch中的两个字段

这是我记录消息的方式:

var loggerConfig = new AWSLoggerConfig
{
     LogGroup = logGroup,
     Region = region
};

var logFactory = new LoggerFactory();
logFactory.AddAWSProvider(loggerConfig);

var logger = logFactory.CreateLogger<Infra.Logging>();
logger.LogInformation(logMessageString);

logMessageString会是由JSON字符串转换:

{
    "id": "001",
    "message": "Received Get Data Request",
    "logLevel": "Information"
}

我要删除的原因是因为我希望在 Insight 中查询我的登录信息,例如:

fields @timestamp, @message
| filter id="001"
| sort @timestamp desc

此查询现在不起作用,所以我认为可能是默认记录[Information]Infra.Logging问题。

感谢任何帮助!

之中

使用您现有的日志记录,即[Information] Infra.Logging: 之后进一步的日志消息。您可以使用parse如下所示的命令。有关 parse 命令的更多详细信息,请参阅AWS 的文档。

假设:您有以下日志记录结构; 在此处输入图片说明

一种可能的解决方案是按如下方式执行 aws 云观察洞察查询;

fields @message | parse @message '[*] Infra.Logging: {"id": "*"' as @loggingType, @some_id | filter @loggingType='Information' and @some_id like '2' | sort @timestamp desc

执行aws cloud watch洞察查询后的输出如下; 在此处输入图片说明

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章