Monolog 的 PHP 完整指南及示例

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

什么是Monolog,为什么需要它?



Monolog 是PHP中用于日志记录的标准库。它提供了一套灵活而强大的工具,可以将日志写入到各种渠道(文件、数据库、电子邮件、系统日志、外部服务等)。Monolog是PHP应用程序的事实标准,尤其在Symfony、Laravel和其他现代框架的生态系统中。



为什么需要这个库?在任何应用程序中,都需要跟踪事件:错误、警告、信息性消息、调试信息。Monolog允许您:

  • 集中式日志记录 — 以统一格式从应用程序的任何位置写入日志。
  • 灵活配置渠道 — 将关键错误发送到Telegram/Slack,而将信息性消息写入文件。
  • 格式化消息 — 添加日期、级别、上下文和调用堆栈。
  • 过滤日志 — 仅处理特定级别的消息。
  • 与框架集成 — 在Symfony、Laravel、Yii2中使用的正是Monolog。


安装

Monolog通过Composer(PHP的标准包管理器)安装。

composer require monolog/monolog

如果您使用的是PHP 8.0+,建议安装最新的稳定版本。安装后,项目中将出现vendor文件夹和包含依赖项的composer.json文件。



快速入门

最简单的示例 — 将日志写入文件:

<?phprequire 'vendor/autoload.php';

use Monolog\\Logger;use Monolog\\Handler\\StreamHandler;

// 创建一个名为'my_app'的日志频道$log = new Logger('my_app');// 添加处理器 — 写入文件$log->pushHandler(new StreamHandler('app.log', Logger::WARNING));

// 现在可以记录日志了$log->warning('这是一个警告');$log->error('这是一个错误');

echo "日志已写入 app.log";?>

执行脚本后,app.log文件中将出现类似以下内容:

[2025-04-09T10:30:00.123456+00:00] my_app.WARNING: 这是一个警告 [] [][2025-04-09T10:30:00.123789+00:00] my_app.ERROR: 这是一个错误 [] []


主要方法和功能

让我们来看看Monolog的关键方法。它们都是Monolog\\Logger类或相关类的一部分。



1. pushHandler(HandlerInterface $handler)

功能: 向堆栈中添加一个处理器。日志记录器可以有多个处理器,每个处理器都会接收所有消息(如果未配置过滤)。

参数:

  • $handler — 实现Monolog\\Handler\\HandlerInterface的对象(例如StreamHandler、FirePHPHandler、SlackHandler)。

示例:

$log = new Logger('app');$log->pushHandler(new StreamHandler('debug.log', Logger::DEBUG));$log->pushHandler(new StreamHandler('errors.log', Logger::ERROR));// 现在级别为ERROR及以上的消息将写入两个文件


2. addRecord(int $level, string $message, array $context = [])

功能: 用于记录日志的基本方法。通常不直接调用,而是使用包装方法(debug()、info()等)。

参数:

  • $level — 日志级别(常量:Logger::DEBUG、Logger::INFO、Logger::WARNING等)。
  • $message — 消息文本。
  • $context — 附加数据的数组(例如用户ID、IP地址)。

示例:

推荐