Serilog日志中EventId输出为JSON对象,如何仅输出Id值?
解决方案:无需自定义Enricher,用原生配置即可实现
当前{EventId}输出成{ Id: 101 }格式,是因为通过LoggerMessage.Define生成的日志事件里,EventId是一个EventId结构体,默认输出时会调用它的ToString()方法。要直接输出Id数值,只需修改日志输出模板:
修改配置中的输出模板
把配置里WriteTo.File.Args下的outputTemplate字段中,{EventId}替换为{EventId.Id}:
"outputTemplate": "{Timestamp:u};{host_ip};{enviroment_hostname};{EventId.Id};{EventCategory};{EventSeverity};{Message:lj};{UserId};{ResourceType};{ResourceId}"
修改后,日志里的EventId部分就会直接输出纯数值(比如101),完全满足需求。
如果后续需要全局统一处理EventId的输出格式,也可以配置Serilog的属性转换器,但当前场景下直接修改输出模板是最简洁的原生解决方案。
内容的提问来源于stack exchange,提问作者Jester
相关产品推荐
相关产品推荐

