高性能的 PHP 日志系统

课程目的

  1. 了解为什么需要日志功能
  2. 学会使用高性能的 SeasLog
  3. 如何在实际的项目中使用 SeasLog

什么是日志系统

专门记录系统运行时的信息的系统

日志的分类:

  • 系统日志:硬件或系统内核奔溃了
  • 服务日志:MySQL 服务或 PHP-FPM 服务奔溃了
  • 安全日志:MySQL 或 Linux 服务器受到了入侵,需要记录相关信息
  • 应用日志:队列发送消息或邮件成功时记录相关信息

然后日志系统的功能不能影响到其他正常功能的使用。

为什么需要日志功能

  1. 了解系统运行情况
  2. 记录用户操作信息
  3. 收集程序各项数据

为什么使用 SeasLog

  1. 高性能;SeasLog 是采用 C 语言编写的,而且它自带缓冲池的功能,先写入内存,再一次性写入文件
  2. 无需配置
  3. 功能完善,使用简单,自带分类模块,统计功能。

如何安装 SeasLog 扩展

  • tar 解压
  • phpize
  • ./config || ./config –with-php-config=PHP-CLI-PATH
  • make && make install
  • 返回 seaslog.so 扩展安装地址
  • 打开 php.ini 文件,将安装地址写入 php.ini
  • 重启 PHP-FPM 和 Web Server

SeasLog 配置项

  • seaslog.default_basepath:默认 log 根目录
  • seaslog.default_logger:默认 logger 目录
  • seaslog.disting_type:是否以 type 分文件
  • seaslog.disting_by_hour:是否每小时划分一个文件
  • seaslog.use_buffer:是否启用 use_buffer
  • seaslog.buffer_size:buffer 中缓冲数量
  • seaslog.level:记录日志级别
  • seaslog.trace_error:自动记录错误
  • seaslog.trace_exception:自动记录异常信息

Seaslog 常用方法

  • 配置方法
    • setBasePath 设置存放路径
    • getBasePath 获取存放路径
    • setLogger 配置模块
    • getLastLogger 获取模块
  • 写日志方法
    • log
    • info
    • notice
    • debug
    • warning
    • error
  • 读日志方法
    • analyzerCount
    • analyzerDetail

Seaslog 集成与 PHP 框架中

查看框架代码,使用适配器模式

注意事项

  • 不要在虚拟主机中使用 SeasLog,它需要安装配置 PHP 扩展,确保对虚拟主机有足够的权限再操作
  • 不要在集群服务中使用 SeasLog,它职责更多是本地日志存储,集群服务需要支持网络日志存储的服务