dereuromark / cakephp-databaselog
CakePHP 数据库日志插件
Requires
- php: >=8.1
- cakephp/cakephp: ^5.0.0
Requires (Dev)
- cakedc/cakephp-phpstan: ^3.0.0
- dereuromark/cakephp-tools: ^3.0.0
- fig-r/psr2r-sniffer: dev-next
- friendsofcake/search: ^7.0.0
- phpunit/phpunit: ^10.2
Suggests
- cakephp/migrations: For migrations to run.
README
为 CakePHP 应用程序提供数据库日志引擎。
此分支适用于 CakePHP 5.0+。有关详细信息,请参阅 版本映射。
功能
- 易于设置,几乎没有依赖。
- 为 Web 和 CLI 日志条目添加了详细的日志信息。
- 默认使用 SQLite 作为单应用轻量级方法。
- 非常适合多服务器或无服务器应用程序,在这些应用程序中,将日志记录到文件并不方便。
- 如果使用数据库,则在数据库不可达的情况下回退到 SQLite。
- 包括简单的管理界面,用于查看/删除日志。
- 包括基本的监控和警报系统。
- 可以导出到 TXT 文件。
日志轮转
虽然文件处理需要文件日志轮转和分割成(压缩)文件块,但数据库方法可以更轻松地将日志保存在单个数据库中。在查看它们或搜索特定内容时,这更方便。
此插件内部将具有相同“内容”的日志条目合并为具有增加计数的单行。此外,您可能还想添加一个由 cronjob 触发的清理 shell,以保持总大小和行数低于某个阈值。
演示
克隆并安装 sandbox 应用,创建一些错误,并浏览管理后端以查看日志概览。
或者直接将其附加到您的应用程序。所需时间:5 分钟。
安装
Composer(首选)
composer require dereuromark/cakephp-databaselog
设置
在您的 Application
类中启用插件
$this->addPlugin('DatabaseLog');
或只需调用
bin/cake plugin load DatabaseLog
您可以直接修改 config/app.php
中现有的配置条目
'Log' => [ 'debug' => [ 'className' => 'DatabaseLog.Database', ], 'error' => [ 'className' => 'DatabaseLog.Database', ], ... ],
这将使用 database_log
连接和一个 SQLite 文件数据库,默认存储在您的 logs
文件夹中。
使用实际数据库(可选)
在您的 config/app.php
中创建一个配置设置,指定应将其记录到哪个数据库连接
'DatabaseLog' => [ 'connection' => 'custom', ],
建议不要使用与您的生产服务器(default
)相同的连接,因为当数据库不可达时,将其记录到其中也将不可行。在这种情况下,它将回退到此服务器实例上的 SQLite 文件记录,尽管如此。
一旦连接可达,将自动创建数据库表(默认为 database_logs
)。无需手动运行任何迁移或 SQL 脚本。
如果您愿意,也可以事先手动创建该表
bin/cake Migrations migrate -p DatabaseLog
如果您使用自定义连接,请确保在此处设置连接以进行迁移
bin/cake Migrations migrate -p DatabaseLog -c custom
到目前为止已完全测试的是 PostgreSQL 和 MySQL,但通过使用 ORM,应支持所有主要数据库。
仅适用于默认连接:您也可以直接将迁移文件(s)复制到您的应用程序 /config/Migrations/
,如有必要,进行修改,然后将其作为应用程序迁移的一部分运行。
使用
在您的应用程序中任何调用 $this->log()
或 Log::write()
的地方,都将使用数据库日志引擎。
$this->log('This is a detailed message logged to the database', 'error'); // or Log::write('error', 'This is a detailed message logged to the database');
还有一个可浏览的 Web 后端,您可以使用它查看日志。
有关更多详细信息,请参阅 文档。