.net - 如何使用 serilog Enrichers 修改 LogEvent 属性值?
问题描述
我需要修改使用 serilog 记录的对象的特定属性值(压缩异常的堆栈跟踪字符串)。
正在记录的 JSON 消息具有以下格式:
{
"@l": "Error",
"errorDetails": {
"StatusCode": 500,
"Message": "some exception message.",
"Exception": {
"Message": "some exception message.",
"Data": [],
"InnerException": null,
"StackTrace": "STACKTRACE VALUE THAT NEEDS TO BE COMPRESSED",
"HelpLink": null,
"Source": "",
"HResult": -2146233088,
"$type": "Exception"
},
"TimeStamp": 1623771938973,
"Path": null,
"$type": "Container"
}
}
下面是 Enricher 的代码:
public class CustomEnricher : ILogEventEnricher
{
public void Enrich(LogEvent logEvent, ILogEventPropertyFactory propertyFactory)
{
var errorContainer = logEvent.Properties["errorDetails"];
}
}
在上面的代码中,我在 errorContainer (LogEventPropertyValue 类型)中获取日志消息。
但无法访问我要修改的特定属性(异常中的堆栈跟踪)。
基本上我正在记录异常并希望在记录之前压缩异常的 stackTrace 属性。
我尝试直接在 Exception 中修改 stacktrace 的值,但它是只读的。
可以使用 Enricher 修改属性吗?
有没有其他解决方案?
解决方案
推荐阅读
- linux - rm -r 和 rm -R 有什么区别吗?
- pandas - PyCharm 中的 Pandas:它在哪里显示箱线图?
- r - X轴上的ggplot2日期全部合并
- javascript - 获取javascript中字符串中两个匹配字符之间的字符长度
- javascript - 如何在laravel中调用''标记中的路线
- node.js - 带有ubuntu的Nodejs pm2在更新后不起作用
- wordpress - wp_verfy_nonce 不断给出错误
- spring-boot - 防止直接调用我的 Spring Boot Rest API
- python - 在终端上运行的 ros 命令找不到 python 包
- python-3.x - 搜索和删除算法