Search
  • Dev Yeah

系统日志的最佳实践

级别

系统运行过程中,或多或少会产生不同级别的日志:详情、普通、严重、错误等。一般越严重/重要的,产生的数量越少,反之,越多。

在开发环境中,我们一般会启用最详细的级别,这样可以全程跟踪系统运行情况,在生产环境中,我们一般只打开严重/错误级别,因为这样才是我们感兴趣的。但是,但真的遇到严重问题的时候,我们不能定位具体问题,就可能要打开更详细的级别来辅助我们找到问题的根源。


记录/通知方式

一些公司仍然把所有日志写入文本文件,譬如Windows的IIS网络服务器的日志就是用的CSV格式。

稍好一点做法,是数据库表。但是日志数量不断增加,这些数据都存放在一个表里面,迟早也会遇到需要切分的问题,而且一般数据库的成本比磁盘文件要高,所以一般来说,生成环境只记录最关心的内容。

而且,因为日志有一个天生的特点,就是每天记录的产生都有一个时间戳,而且是随着时间变化不断变大。我们做查询的时候,一般是按照时间来排序,最常见的就是倒序,也就是最新的日志,我们最感兴趣。所以,日志在数据库中的存储,一般是按时间戳做聚集倒序索引。

当然还有更特别的,就是遇到严重/异常的时候,通过邮件发送,甚至短信通知运维。


切分方式

一般是按每天来切分存储,如果数据量很大,那颗粒度会更低,譬如每个小时等。也有按大小来切分的,譬如每10M生成一个文件。这些都是所谓的窗口大小,可以按时间、大小、地区、部门等等来切分。


查询统计

日志的记录,除了排除,我们来会用来做数据统计。

然而从不同纬度分析这些数据麻烦,譬如分布式系统哪个地方的哪个模块那些用户群只有特定问题等,而且一般不能实时。

Raygun.io这个云日志服务提供商满足以上需求,他们以前用的nodejs,后来改成asp.net core,性能提升了20倍。


如何设计最佳的日志系统

是否想掌握怎样实现搞性能的分布式系统开发和设计出高效的日志系统?

可以找我们Dev Yeah学习全栈课程!访问官网 DevYeah.com 帮助你快速成长为更优秀的软件工程师!


版权所有

所有文章内容版权所有,任何形式的转发/使用都必须先征得本站书面同意。本站保留一切追究的权利。

87 views

©2019 by Dev Yeah Pty Ltd.

联系我们

​扫码加学员群

  • Black Facebook Icon

​扫码加客服微信