首页 新闻 会员 周边 捐助

如何让 Serilog 日志在遇到空行时显示默认内容

0
悬赏园豆:30 [已解决问题] 解决于 2023-02-13 21:17

日志模板如下

"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 没有值时用默认值填充?

dudu的主页 dudu | 高人七级 | 园豆:29622
提问于:2023-02-13 18:04
< >
分享
最佳答案
0

通过 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}"
    }
  }
}

参考:

dudu | 高人七级 |园豆:29622 | 2023-02-13 21:15

今天发现一个更简单的方法,在 appsettings.json 中通过 Properties 设置默认值

{
  "Serilog": {
    "Properties": {
      "RequestPath": "-"
    }
  }
}
dudu | 园豆:29622 (高人七级) | 2023-02-18 09:20
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册