同福

做个web框架(15)——日志对象TFLog(一)日志模块介绍【20201111】

介绍

介绍

福哥今天要给大家介绍的是web框架里面非常重要的一个部分——日志模块,在web项目开发过程中日志作为了解项目运行状况的工具是极其重要的。没有日志的话,系统运行出现问题我们无从下手去解决问题,只能盲猜或者重构,很显然我们不能这样做。有了日志我们就可以根据日志里记录的出现问题时候的“现场”情况进行问题的分析,从而快速找到诱使问题出现的根本原因并准确彻底地解决问题。

日志对象TFLog

首先我们先建立TFLog这个日志对象,程序文件保存在System/TFLog.inc.php。

b04881a9acf31bbf.jpg

日志级别

级别分类

日志是分等级的,一般情况下日志可以分成:trace、debug、info、warn、error几个等级,福哥来给大家一一说明一下。

  • trace,这个是追踪日志

  • debug,字面意思,这是用来做调试的时候增加了日志信息,这些信息在生产环境是不应该出现的

  • info,这个是信息日志,用来打印动作、操作、业务流程等等信息的,通常情况下用来做分析使用的

  • warn,警告日志,这个级别就比较高了,在程序出现一些不影响系统运行的错误的时候会被记录警告日志

  • error,错误日志,这个级别是最高的,在程序出现足以造成影响功能正常使用的时候会被记录错误日志

级别高低

知道了日志的几个等级之后,我们需要了解一个问题,就是这些日志等级之间是有高低顺序的。按照级别的高低顺序排列是:trace < debug < info < warn < error,级别高的日志会被记录。

如果我们设置记录日志的级别为all,那么全部级别的日志都会被记录。

如果我们设置记录日志的级别为off,那么任何级别的日志都不会记录。

如果我们设置记录日志的级别为info,那么只有高于info级别的warn和error以及info本身会被记录。

日志保存方式

日志保存一般情况下是写到服务器的磁盘上的一个文件里的,但是文件操作是有并发问题的,为了解决这个问题可以考虑使用第三方软件记录日志。不过,第三方软件的可靠性相比服务器的磁盘上的文件来讲是差得多的,我们可以两边都写避免记录失败的情况。

第三方软件

Redis

我们可以考虑将日志信息记录到Redis的List结构的数据里面,然后启动一个守护进程去读取这个List结构里面的数据保存到文件里,因为这个操作是单线程的,所以不会有问题了。

ElasticSearch

将日志保存到ElasticSearch的索引库里面也是不错的选择,而且不需要再做其他操作了。

MySQL

将日志保存到MySQL的数据库也不错,而且也不需要再做其他操作了。

日志格式

日志的格式很自由的,日志是一个字符串,这个字符串里可以将系统的很多环境参数作为变量记录到起来。

日志变量

福哥列出了一部分的日志可以使用的变量,这个根据不同的编程语言会有所不同。

  • 级别

  • 模块

  • 对象

  • 方法

  • 文件

  • 时间

总结

福哥今天给大家介绍了日志的相关知识,童鞋们应该了解了关于日志级别、日志保存方式、日志格式的概念和具体内容。我们要做一个稳定的系统,除了依靠高超的编程水平之外,更加重要的就是完善的日志记录。有了日志数据就可以在出现任何问题的时候可以很快找到原因并解决问题了。

下一课福哥就会带着童鞋们实现日志对象TFLog的功能了。