l0rb / monolog-pdo-handler
Monolog 的一个处理器,通过 PDO 驱动将数据存储到数据库
v0.8
2022-05-10 12:50 UTC
Requires
- php: >=5.3.0
- ext-pdo_mysql: *
- monolog/monolog: >1.4.0
- symfony/var-dumper: ^5.4
This package is not auto-updated.
Last update: 2024-10-02 20:27:42 UTC
README
Monolog 的 PDO 处理器,允许通过 PDO 处理器将日志消息存储在 MySQL 数据库中。
处理器可以将文本消息记录到特定的表中,如果表不存在,则会自动创建。
安装
monolog.KW-PDO-Handler`` 通过 composer 提供。只需在 composer.json 的需求部分添加以下行,然后执行
php composer.phar update`。
"karelwintersky/monolog-pdo-handler": "^0.1.0"
或者
composer require karelwintersky/monolog-pdo-handler
用法
像使用其他任何 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; // 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 文件以获取更多信息。