karelwintersky / monolog-pdo-handler
Monolog 的处理器,通过 PDO 驱动将数据存储到数据库
0.6
2023-08-06 17:33 UTC
Requires
- php: >=7.1
- ext-pdo: *
- monolog/monolog: >1.4.0
README
Monolog 的 PDO 处理器,允许通过 PDO 处理器将日志消息存储在 MySQL 数据库中。
处理器可以将文本消息记录到指定的表中,如果表不存在,则会自动创建。
安装
karelwintersky/monolog-pdo-handler
通过 composer 提供。
composer require karelwintersky/monolog-pdo-handler
最低 PHP 版本为 7.1
使用方法
就像使用其他 Monolog 处理器一样使用它,将其推送到 Monolog 日志实例的堆栈中。但是,该处理器需要一些参数
$pdo
- 数据库的 PDO 实例。传递数据库连接的 PDO 实例化,并选择数据库。$table
- 存储日志的表名。$additional_fields
- 额外数据库字段定义的关联数组。所有额外的列都会自动创建,并且可以在记录的额外上下文部分中使用这些字段。默认为空数组。$additional_indexes
- 额外数据库索引定义的关联数组。默认为空数组$level
- 此处理器将触发记录的最小日志级别。必须是标准的 Monolog 日志级别之一(默认:Logger::DEBUG)
日志表中默认字段
id
- 定义为BIGINT(20) NOT NULL AUTO_INCREMENT PRIMARY KEY
;ipv4
- 定义为int(10) unsigned DEFAULT NULL
,将包含客户端 IPv4 或控制台脚本的 127.0.0.1;time
- 定义为TIMESTAMP
,将包含当前时间戳;level
- 定义为SMALLINT
,日志级别;channel
- 定义为VARCHAR(64)
,通道名称;message
- 定义为LONGTEXT
,消息;
示例
假设 $pdo 是您的数据库实例,您可以使用该类如下所示
//Import class use Monolog\Logger; use KarelWintersky\Monolog\KWPDOHandler; // Create log handler // using table `log` with additional fields // `filename`, `filesize`, `filetime` // and index at field `filename` // minimum logging level is INFO. $log_handler = new KWPDOHandler($pdo_handler, 'log', [ 'filename' => 'VARCHAR(32)', 'filesize' => 'BIGINT(20) DEFAULT NULL', 'filetime' => 'DATETIME' ], [ 'filename' => 'CREATE INDEX filename on `%s` (`filename`) USING HASH', ], Logger::INFO); // Create logger $monologger = new \Monolog\Logger($monolog_channel); // Set handler $monologger->pushHandler($log_handler); // Now you can use the logger, and further attach additional information $monologger->notice("File information", [ 'filename' => $data['filename'], 'filesize' => $data['filesize'], 'filetime' => $data['filetime'] ]);
注意:SQLite 不支持 'USING method' 用于索引;
待办事项
- 检查并覆盖默认字段定义
- 更新README:如何编写自定义索引
- 更新README:关于 SQLite。
- 实现 PostgreSQL 的默认索引
许可证
此工具是免费软件,并且根据 MIT 许可证分发。请查看 LICENSE 文件以获取更多信息。