wazaari / monolog-mysql

Monolog 的处理器,将消息发送到 MySQL

v1.0.6 2020-07-03 07:35 UTC

This package is auto-updated.

Last update: 2024-09-19 00:21:54 UTC


README

Monolog 的 MySQL 处理器,允许将日志消息存储在 MySQL 表中。它可以将文本消息记录到指定的表中,如果表不存在,则自动创建表。类还允许动态添加额外的属性,这些属性存储在单独的数据库字段中,可用于后续分析和排序。

需要帮助

由于我不再使用此项目,也没有时间像它应得的那么维护此项目,所以我非常乐意找到愿意接管此项目的人。如果您有兴趣接管该项目,请通过 danielherrmann+gitlab@posteo.de 联系我。谢谢!

安装

monolog-mysql 通过 composer 提供。只需将以下行添加到 composer.json 中 required 部分,然后执行 php composer.phar update

"wazaari/monolog-mysql": ">1.0.0"

使用方法

就像使用其他 Monolog 处理器一样使用它,将其推送到 Monolog 日志实例的堆栈中。但是,处理器需要一些参数

  • $pdo 数据库的 PDO 实例。传递您的数据库连接的 PDO 实例,并选择您的数据库。
  • $table 应存储日志的表名
  • $additionalFields 简单的额外数据库字段数组,这些字段应存储在数据库中。列将自动创建,字段可以在记录的额外上下文部分中使用。请参阅下面的示例。默认为空数组()
  • $level 可以是任何标准的 Monolog 记录级别。使用 Monolog 静态定义的上下文。默认为 Logger::DEBUG
  • $bubble 默认为 true
  • $skipDatabaseModifications 定义是否应跳过任何尝试将当前数据库状态与代码请求的状态同步的操作(包括创建表和添加/删除字段)。默认为 false

如果 $skipDatabaseModifications 设置为 true,请使用以下查询模板创建日志表(如果需要,包括额外的字段)

CREATE TABLE `log` (
    id BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, channel VARCHAR(255), level INTEGER, message LONGTEXT, time INTEGER UNSIGNED, INDEX(channel) USING HASH, INDEX(level) USING HASH, INDEX(time) USING BTREE
)

示例

假设 $pdo 是您的数据库实例,您可以使用类如下

//Import class
use MySQLHandler\MySQLHandler;

//Create MysqlHandler
$mySQLHandler = new MySQLHandler($pdo, "log", array('username', 'userid'), \Monolog\Logger::DEBUG);

//Create logger
$logger = new \Monolog\Logger($context);
$logger->pushHandler($mySQLHandler);

//Now you can use the logger, and further attach additional information
$logger->addWarning("This is a great message, woohoo!", array('username'  => 'John Doe', 'userid'  => 245));

许可证

此工具是免费软件,根据 MIT 许可证分发。请参阅 LICENSE 文件以获取更多信息。