首页 > 解决方案 > Serilog 控制台接收器输出换行符为 \r\n

问题描述

我正在使用Serilog记录器和控制台接收器来登录我的ASP.NET Core 5.0项目。也可以ILoggerFactory与 EF Core 5.0 一起使用,如下所示

optionsBuilder.UseLoggerFactory(serilogFactory) 

但是,当 EF Core 记录 SQL 语句时,这些行不会在控制台上显示为换行符,而是显示为\r\nLoggerFactory但是如果我使用ASP.NET Core下面的内置

var loggerFactory = LoggerFactory.Create(
    builder => builder.AddConsole(options =>
    {
    })
);
optionsBuilder.UseLoggerFactory(loggerFactory);

然后就好了。

有没有办法解决这个问题?

标签: asp.net-coreserilogasp.net-core-5.0

解决方案


当使用带有控制台接收器的 Serilog 时,Message模板中的属性应该具有格式说明符:l以实现所需的格式:

"outputTemplate": "{Timestamp:yyyy-MM-dd HH:mm:ss.fff} [{Level:u3}] {Message:l}{NewLine}{Exception}"

通过使用该说明符,消息字符串将不会被引用,从而正确格式化输出。

有关说明符的更多信息:https ://github.com/serilog/serilog/wiki/Formatting-Output


推荐阅读