我已成功将来自 .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"
}
}
但它不起作用。有什么方法可以删除自动添加到@message
CloudWatch中的两个字段?
这是我记录消息的方式:
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
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句