Skip to main content

.Net高性能日志处理

分类:  .Net技术 标签:  #Logs 发布于: 2023-05-21 17:37:41

虽然对于dotnet 平台来说,日志的记录是非常快的,一般情况直接使用log的扩展方法记录日志就可以了,对于大多数的应用场景都是适用的,但是有一种情况是需要重新考量这种方式的,如果你的系统面对的访问量非常大,这个时候日志的使用就会显得非常重要了,我们需要尽可能的优化这个部分,关于这个部分实际上微软已经给出了解决方案:使用LogMessages 模式,关于这个部分微软有一个文档专门讲述了这个部分:
High-performance logging in .NET

针对于.Net Core 和这个文档是公用的。

文档讲得非常清楚LogMessages模式主要是在两个方面对在大流量得系统下是如何进行优化的:

  1. 传统的log扩展方法在进行消息记录的时候会对传入到消息中的信息进行boxing/unboxing等类型转换的操作,这在大流量的系统中是非常耗时的。

  2. 传统的log扩展方法每次调用都需要进行模式替换,但是使用LogMessages模式只需要替换一次,并被缓存。

通过这两个改进可以极大的提高大流量的系统的日志处理方面的性能,有个老外专门做了benchmark, 大家可以比较一下,在日志处理上的性能提升是非常巨大的。

如下是老外的文章:
High-Performance Logging in .NET Core

也可以参考一下Asp.net Core官方提供的代码。