Serilog 表达式中的多个条件分支
Multiple conditional branches in Serilog expression
我们已经开始使用 Serilog 为我们的应用程序生成结构日志。使用 Serilog Expressions 我们已经能够生成以下 JSON,就日志记录而言,这非常酷。
{
"@t": "2022-02-11T15:57:57.6087361+01:00",
"@m": "GET Request received on API endpoint /foo",
"@l": "Info",
"SourceContext": "Company.API.FooController",
"ActionId": "bd248542-138b-4053-9d50-b9e62e0ab1fd",
"ActionName": "Company.API.FooController.GetFoo (Company.API)",
"RequestId": "0HMFDDRDSMUUI:00000001",
"RequestPath": "/foo",
"SpanId": "|85c9c2db-489a260ce2c6915e.",
"TraceId": "85c9c2db-489a260ce2c6915e",
"ParentId": "",
"ConnectionId": "0HMFDDRDSMUUI",
"ThreadId": 7,
"ContextFieldA": "ValueA",
"ContextFieldB": "ValueA"
}
这些日志事件是使用从环境变量中读取的以下表达式生成的:
"{ {@t, @m, @r, @l: if @l = 'Information' then 'Info' else @l, @x, ..@p} }\n"
但是我们也想将其他日志级别映射到简写。例如 Warning
到 Warn
等。我们如何向这个表达式添加多个 if-else 分支?
其实答案出奇的简单。可以完全按照预期完成多个分支:
"{ {@t, @m, @r, @l: if @l = 'Information' then 'Info'
else if @l = 'Warning' then 'Warn' else @l, @x, ..@p} }\n"
我们已经开始使用 Serilog 为我们的应用程序生成结构日志。使用 Serilog Expressions 我们已经能够生成以下 JSON,就日志记录而言,这非常酷。
{
"@t": "2022-02-11T15:57:57.6087361+01:00",
"@m": "GET Request received on API endpoint /foo",
"@l": "Info",
"SourceContext": "Company.API.FooController",
"ActionId": "bd248542-138b-4053-9d50-b9e62e0ab1fd",
"ActionName": "Company.API.FooController.GetFoo (Company.API)",
"RequestId": "0HMFDDRDSMUUI:00000001",
"RequestPath": "/foo",
"SpanId": "|85c9c2db-489a260ce2c6915e.",
"TraceId": "85c9c2db-489a260ce2c6915e",
"ParentId": "",
"ConnectionId": "0HMFDDRDSMUUI",
"ThreadId": 7,
"ContextFieldA": "ValueA",
"ContextFieldB": "ValueA"
}
这些日志事件是使用从环境变量中读取的以下表达式生成的:
"{ {@t, @m, @r, @l: if @l = 'Information' then 'Info' else @l, @x, ..@p} }\n"
但是我们也想将其他日志级别映射到简写。例如 Warning
到 Warn
等。我们如何向这个表达式添加多个 if-else 分支?
其实答案出奇的简单。可以完全按照预期完成多个分支:
"{ {@t, @m, @r, @l: if @l = 'Information' then 'Info'
else if @l = 'Warning' then 'Warn' else @l, @x, ..@p} }\n"