Serilog SourceContext class name only via appsettings.json only approach
Serilog SourceContext class name only via appsettings.json only approach
我正在为我的 Blazor(服务器)项目使用 Serilog ASP.NET 核心,我通过 appsettings.json
配置记录器,这就是我的输出模板的样子:
"[{Timestamp:yyyy-MM-dd HH:mm:ss.fff zzz} [{Level:u4}] ] [{SourceContext}] {Message:lj}{NewLine}{Exception}"
我使用 builder.Host.UseSerilog()
将其添加到应用程序中,并使用 ILogger
将其注入到我的组件中。
我想要的是仅显示 class 名称 而不是像 [=16] 那样显示完整的程序集+class 名称=].
可能吗?
这个我已经试过了:
此后记录器的配置 (appsettings.json
) 不起作用。
另一个问题有一个基于代码的方法,而我更喜欢通过 appsettings.json
.
的配置。
您可以通过 ExpressionTemplate
.
应用表达式
Serilogs GitHub 页面显示 recipe 仅记录类型名称,没有命名空间。
Trim down SourceContext
to a type name only:
Substring(SourceContext, LastIndexOf(SourceContext, '.') + 1)
This expression takes advantage of LastIndexOf()
returning -1 when no . character appears in SourceContext, to yield a startIndex of 0 in that case.
您的 appsettings.json
配置必须指定使用 ExpressionTemplate
。对于如下所示的 Console
记录器。
"Serilog": {
"MinimumLevel": {
"Default": "Debug",
},
"WriteTo": [
{
"Name": "Console",
"Args": {
"formatter": {
"type": "Serilog.Templates.ExpressionTemplate, Serilog.Expressions",
"template": "{@t:HH:mm:ss} - {@l:u} - {Substring(SourceContext, LastIndexOf(SourceContext, '.') + 1)}: {@m}\n{@x}"
}
}
}
]
}
请注意,从版本 3.3.0 开始,您需要包含 NuGet
个包 Serilog.Expressions and Serilog.Settings.Configuration。
<PackageReference Include="Serilog.Expressions" Version="3.3.0" />
<PackageReference Include="Serilog.Settings.Configuration" Version="3.3.0" />
我正在为我的 Blazor(服务器)项目使用 Serilog ASP.NET 核心,我通过 appsettings.json
配置记录器,这就是我的输出模板的样子:
"[{Timestamp:yyyy-MM-dd HH:mm:ss.fff zzz} [{Level:u4}] ] [{SourceContext}] {Message:lj}{NewLine}{Exception}"
我使用 builder.Host.UseSerilog()
将其添加到应用程序中,并使用 ILogger
将其注入到我的组件中。
我想要的是仅显示 class 名称 而不是像 [=16] 那样显示完整的程序集+class 名称=].
可能吗?
这个我已经试过了:
此后记录器的配置 (appsettings.json
) 不起作用。
另一个问题有一个基于代码的方法,而我更喜欢通过 appsettings.json
.
您可以通过 ExpressionTemplate
.
Serilogs GitHub 页面显示 recipe 仅记录类型名称,没有命名空间。
Trim down
SourceContext
to a type name only:Substring(SourceContext, LastIndexOf(SourceContext, '.') + 1)
This expression takes advantage of
LastIndexOf()
returning -1 when no . character appears in SourceContext, to yield a startIndex of 0 in that case.
您的 appsettings.json
配置必须指定使用 ExpressionTemplate
。对于如下所示的 Console
记录器。
"Serilog": {
"MinimumLevel": {
"Default": "Debug",
},
"WriteTo": [
{
"Name": "Console",
"Args": {
"formatter": {
"type": "Serilog.Templates.ExpressionTemplate, Serilog.Expressions",
"template": "{@t:HH:mm:ss} - {@l:u} - {Substring(SourceContext, LastIndexOf(SourceContext, '.') + 1)}: {@m}\n{@x}"
}
}
}
]
}
请注意,从版本 3.3.0 开始,您需要包含 NuGet
个包 Serilog.Expressions and Serilog.Settings.Configuration。
<PackageReference Include="Serilog.Expressions" Version="3.3.0" />
<PackageReference Include="Serilog.Settings.Configuration" Version="3.3.0" />