gpt4 book ai didi

c# - 使用 Serilog WriteTo.Console 时如何查看 MessageTemplate?

转载 作者:行者123 更新时间:2023-12-05 03:34:19 26 4
gpt4 key购买 nike

我使用 Serilog 进行日志记录,并使用控制台编写器将日志发送到标准输出,然后由 Filebeat 提取并发送到 Elastic。记录器的配置包括以下内容:

.WriteTo.Console(outputTemplate: "[{Timestamp:HH:mm:ss} {Level:u3}] {Message:lj}{Properties:j}{NewLine}{Exception}")

这一切都很好,结构化属性以 JSON 格式正确输出和呈现,但是,它缺少 MessageTemplate 属性值,该值将输出类似于:

"MessageTemplate":"用户 {Username} 登录成功"

这是一个问题,因为能够在 Kibana 中运行查询以通过搜索消息模板而不是特定于单个用户的呈现消息来显示用户登录次数会很有用,例如:

“消息”:“用户“Joe Bloggs”登录成功”

我可以看到我可以使用 JsonFormatter 对象写入控制台:

.WriteTo.Console(new JsonFormatter(renderMessage: true))

使用此方法会同时输出 Message 和 MessageTemplate 属性,但它是在一个丑陋的 JSON block 中输出的,当人们在命令行上查看日志时,这真的很难阅读。

有人知道 Serilog 控制台输出模板是否可以包含 MessageTemplate 吗?

最佳答案

Serilog.Expressions 可以做到这一点。

dotnet add package Serilog.Expressions

然后:

  .WriteTo.Console(new ExpressionTemplate(
"[{@t:HH:mm:ss} {@l:u3}] {@m} { {..@p, MessageTemplate: @mt} }\n{@x}"))

关于c# - 使用 Serilog WriteTo.Console 时如何查看 MessageTemplate?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70188639/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com