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

img*_*gen 6 serilog asp.net-core asp.net-core-5.0

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

optionsBuilder.UseLoggerFactory(serilogFactory) 
Run Code Online (Sandbox Code Playgroud)

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

var loggerFactory = LoggerFactory.Create(
    builder => builder.AddConsole(options =>
    {
    })
);
optionsBuilder.UseLoggerFactory(loggerFactory);
Run Code Online (Sandbox Code Playgroud)

那么就可以了。

有办法解决这个问题吗?

Ari*_*aes 9

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

"outputTemplate": "{Timestamp:yyyy-MM-dd HH:mm:ss.fff} [{Level:u3}] {Message:l}{NewLine}{Exception}"
Run Code Online (Sandbox Code Playgroud)

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

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