NoteDeep
日志系统是非常重要的但是也容易被忽视的部分。让我们来探讨一下,怎么设计一个日志系统。

日志级别

首先,我们需要合理地区分日志级别。
  • 1:打印FATAL
  • 2:打印FATAL和WARNING
  • 4:打印FATAL、WARNING、NOTICE (线上正常运行时的配置)
  • 8:打印FATAL、WARNING、NOTICE、TRACE (线上异常时使用该配置)
  • 16:打印FATAL、WARNING、NOTICE、TRACE、DEBUG (测试环境配置)
对于warning和fatal级别的日志,建议打印在 app.wf.log文件里面。
而对于其他级别的日志, 建议打印在 app.log 文件里。
这样一来,我们可以通过查看不同的文件,来查看不同级别的日志,对于比较严重的错误/警告日志,我们通过查看app.wf.log文件来定位问题。

日志文件的位置

{ROOT}/log/{APP_NAME}/

日志格式

日志需要包括哪些必要的字段呢:
日志级别(Log Level)、时间、文件的物理位置:行号、错误码(errno)、日志Id(logId)、请求url、用户(user)、 字符串信息(msg)、数据(data)、应用名称(appName)、客户端ip、服务器ip。

调用日志的方法设计

通过3个参数
str:相当于一个独一无二的tag,方便grep查看,表明是什么地方/功能 打的日志
errno: 错误码
data: 需要打印的其他数据,一般是一个array
比如登录发生了致命错误:
Logger::fatal('LoginErr', 1, $logData);



评论列表

    日志级别
    日志文件的位置
    日志格式
    调用日志的方法设计