如何在 Serilog JsonFormatter 输出中包含 "Message" 和 "MessageTemplate"?
How can I include both "Message" and "MessageTemplate" in the Serilog JsonFormatter output?
我正在使用 Serlog 2.10,
写入控制台(作为人类可读的文本),
和 RollingFile - 使用 JsonFormatter.
我希望在输出 JSON 中同时包含:“Message”和“MessageTemplate”节点,
但是我只收到“Message”或“MessageTemplate”中的一个,而不是两者。
配置方式如下:
Log.Logger = new LoggerConfiguration()
.MinimumLevel.Information()
.WriteTo.Console()
.WriteTo.RollingFile(new JsonFormatter(), "logs/log-{Date}.log")
.CreateLogger();
我按照此页面上的说明操作:
https://github.com/serilog/serilog-formatting-compact
我已经尝试了所有 3 个 Json 格式化程序:
- "RenderedCompactJsonFormatter" - 在输出中放入“@m”(消息)
- "CompactJsonFormatter" - 在输出中放入"@mt" (MessageTemlate)
- "JsonFormatter" - 在输出中放入“MessageTemplate”
如何将它们都包含在输出中?
如有任何帮助,我们将不胜感激
一种方法是编写您自己的格式化程序。从例如开始JsonFormatter 并且只使用那些对您的要求有效的部分。
Serilog.Expressions 可以这样做:
.WriteTo.RollingFile(
new ExpressionTemplate(
"{ {Timestamp: @t, Level: @l, MessageTemplate: @mt, Message: @m, Exception: @x, " +
"Properties: if IsDefined(@p[?]) then @p else undefined()} }" + Environment.NewLine,
"logs/log-{Date}.log")
我正在使用 Serlog 2.10, 写入控制台(作为人类可读的文本), 和 RollingFile - 使用 JsonFormatter.
我希望在输出 JSON 中同时包含:“Message”和“MessageTemplate”节点,
但是我只收到“Message”或“MessageTemplate”中的一个,而不是两者。
配置方式如下:
Log.Logger = new LoggerConfiguration()
.MinimumLevel.Information()
.WriteTo.Console()
.WriteTo.RollingFile(new JsonFormatter(), "logs/log-{Date}.log")
.CreateLogger();
我按照此页面上的说明操作: https://github.com/serilog/serilog-formatting-compact
我已经尝试了所有 3 个 Json 格式化程序:
- "RenderedCompactJsonFormatter" - 在输出中放入“@m”(消息)
- "CompactJsonFormatter" - 在输出中放入"@mt" (MessageTemlate)
- "JsonFormatter" - 在输出中放入“MessageTemplate”
如何将它们都包含在输出中?
如有任何帮助,我们将不胜感激
一种方法是编写您自己的格式化程序。从例如开始JsonFormatter 并且只使用那些对您的要求有效的部分。
Serilog.Expressions 可以这样做:
.WriteTo.RollingFile(
new ExpressionTemplate(
"{ {Timestamp: @t, Level: @l, MessageTemplate: @mt, Message: @m, Exception: @x, " +
"Properties: if IsDefined(@p[?]) then @p else undefined()} }" + Environment.NewLine,
"logs/log-{Date}.log")