日志模板如下
"outputTemplate": "{Timestamp:yyyy-MM-dd HH:mm:ss.fff} [{Level}] {Message:l}{NewLine}{RequestPath}{NewLine}{SourceContext}{NewLine}{Exception}"
当在 Program 中写日志时,RequestPath 没有值时会出现一个空行
2023-02-13 17:46:42.120 [Information] zzk-api started!
Cnblogs.Zzk.WebApi
如何让 Serilog 在 RequestPath 没有值时用默认值填充?
通过 Serilog.Templates.ExpressionTemplate
解决了
安装 nuget 包 Serilog.Expressions
dotnet add package Serilog.Expressions
appsettings.json 中修改 serilog 设置
{
"Name": "Console",
"Args": {
"formatter": {
"type": "Serilog.Templates.ExpressionTemplate, Serilog.Expressions",
"template": "{@t:yyyy-MM-dd HH:mm:ss.fff} [{@l}] {@m}\n{Coalesce(RequestPath, '-')}\n{SourceContext}\n{@x}"
}
}
}
参考:
今天发现一个更简单的方法,在 appsettings.json 中通过 Properties 设置默认值
{
"Serilog": {
"Properties": {
"RequestPath": "-"
}
}
}