Serilog 控制台接收器输出换行符为 \r\n

Serilog Console sink output newline as \r\n

我正在使用 Serilog 记录器和控制台接收器来记录我的 ASP.NET Core 5.0 项目。还使用与 EF Core 5.0 相同的 ILoggerFactory,如下所示

optionsBuilder.UseLoggerFactory(serilogFactory) 

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

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

那就好了

有办法解决这个问题吗?

将 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