Serilog ExpressionTemplate 重命名日志级别并应用格式

Serilog ExpressionTemplate rename log level and apply formatting

我正在尝试使用 serilog 的 ExpressionTemplate 并按以下方式写入日志级别:

{ "level": "INF", ... }

我知道如何为 @l 设置别名 - level: @l 我知道如何将关卡格式化为三个大写字母 - @l:u3 但我无法将两者结合起来

我尝试了以下方法但没有成功(尝试格式化模板时出现异常失败):

level: @l:u3
{'level': @l:u3}

在撰写本文时,这是 a limitation in Serilog.Expressions,希望能尽快解决。

Update: version 3.4.0-dev-* now on NuGet supports ToString(@l, 'u3').

您可以使用条件来解决它:

{'level': if @l = 'Information' then 'INF' else if @l = 'Warning' then 'WRN' else 'ERR'}

剩余关卡还有几个分支。

(或者,您可以按照 ToShortLevel(@l) 的方式编写并插入 user defined function,然后改用它。)