我在我的Blazor(服务器)项目中使用Serilog ASP.NET Core,我通过appsettings.json
配置日志记录器,这是我的输出模板的样子:
"[{Timestamp:yyyy-MM-dd HH:mm:ss.fff zzz} [{Level:u4}] ] [{SourceContext}] {Message:lj}{NewLine}{Exception}"
我使用builder.Host.UseSerilog()
将其添加到应用程序中,并使用ILogger
将其注入到我的组件中。
我想要的是只显示类名,而不是像{SourceContext}
那样显示完整的程序集+类名。
有可能吗?
我已经试过这个了:serilog format SourceContext for showing only assembly name
在此之后,日志记录器(appsettings.json
)的配置不起作用。
另一个问题有一个基于代码的方法,而我更喜欢通过appsettings.json
的配置。
1条答案
按热度按时间oyjwcjzk1#
您可以通过
ExpressionTemplate
应用表达式。Serilogs GitHub页面显示了一个只记录类型名称而不记录命名空间的方法。
将
SourceContext
修剪为仅一个类型名称:这个表达式利用了
LastIndexOf()
在no时返回-1的优点。字符,在这种情况下产生的startIndex为0。您的
appsettings.json
配置必须指定使用ExpressionTemplate
。对于如下所示的Console
记录器。请注意,从3.3.0版开始,您需要包含
NuGet
包Serilog.Expressions和Serilog.Settings.Configuration。