Serilog速度慢,性能差

我做错了什么还是 Serilog 的性能很差?

新建一个 Asp.Net Core 5.0 webapi 项目,添加对 Serilog.AspNetCore nuget 包的引用和如下配置代码。Serilogs 每个请求增加 15 毫秒!在我的发布版本中,maching 从 5ms 跳到 20ms。

程序.cs

public class Program
{
    public static void Main(string[] args)
    {
        Log.Logger = new LoggerConfiguration()
            .MinimumLevel.Override("Microsoft", LogEventLevel.Information)
            .Enrich.FromLogContext()
            .WriteTo.Console()
            .CreateLogger();

        CreateHostBuilder(args).Build().Run();
    }

    public static IHostBuilder CreateHostBuilder(string[] args) =>
        Host.CreateDefaultBuilder(args)
            .UseSerilog()
            .ConfigureWebHostDefaults(webBuilder =>
            {
                webBuilder.UseStartup<Startup>();
            });
}

回答

性能下降可能不是 Serilog 本身,而是您将所有日志同步写入控制台的事实,这会阻塞请求线程并对性能产生一些影响。

如果您使用任何其他最终调用的日志库,Console.WriteLine我希望您获得类似的性能。结果。

一个常见的模式是使用Asyncsink,并在后台线程上写入控制台。例如:

Log.Logger = new LoggerConfiguration()
    .MinimumLevel.Override("Microsoft", LogEventLevel.Information)
    .Enrich.FromLogContext()
    .WriteTo.Async(writeTo => writeTo.Console()) // <<#<<#<<
    .CreateLogger();

当然,从 Web 应用程序直接写入控制台通常不是最好的方法......你可以使用更好的接收器来直接定位你将存储日志的位置。


以上是Serilog速度慢,性能差的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>