rstriquer/eloquent-logger

将SQL查询写入Laravel "storage/logs"目录的文件中。

1.0.0 2023-04-20 20:14 UTC

This package is not auto-updated.

Last update: 2024-09-24 19:47:41 UTC


README

一个允许通过Laravel的eloquent ORM组件记录所有应用程序执行的SQL查询的包。

此包在"vendors"文件夹中构建了一个Laravel提供者,它将一个监听器附加到Eloquent控制台管理器,以将查询写入日志输出。

由于该包位于"vendors"文件夹并在开发环境中安装,因此开发者无需担心从提供者中添加或删除代码,如互联网上某些页面建议的,从而简化了日常操作;

重要:

  • 此模块不建议在生产环境中使用。它仅适用于开发环境;
  • 考虑到该包会记录所有查询,建议即使在开发环境中也应将其关闭,仅在进行查询改进工作时打开,因为它在连续运行时可能会消耗大量硬盘空间;
  • 在非常极端和特定的情况下,例如写入非常大的内容(如长文本字段或类似内容)时,插件可能导致记录失败,这取决于操作系统的限制(在旧版Windows版本中,根据FAT32可能限制输出文件的大小小于4GB);
  • 总的来说,日志文件本身并不大,但没有设置logrotate功能,因此建议您监控日志文件大小,并在必要时删除它;

最低要求

此插件是在使用Laravel版本8.0时构建的,应与任何8.0之后的Laravel版本正常工作。

如果您有机会在以前的Laravel版本中成功使用此插件,请考虑提交一个问题来报告您的经验。

如果您在此插件中遇到任何问题,请按照以下“贡献”部分中的步骤报告。

如何安装

只需运行以下命令

composer require rstriquer/eloquent-logger --dev

如果您想,可以通过设置环境变量DB_LOGGER_FILE来个性化日志文件名。它与.end文件一起工作,并且该文件必须放置在存储目录中。

如何使用插件

只需在您的.env文件中将环境变量DB_LOGGER_ACTIVE设置为true并运行应用程序。在DB_LOGGER_FILE变量中设置的文件(默认为位于应用程序根目录存储目录中的'/logs/query.log')应包含该次运行执行的查询。

要限制日志文件为最后10行,可以运行以下命令序列

tail -n 10 storage/logs/query.log > storage/logs/query.tmp && \
    cat storage/logs/query.tmp > storage/logs/query.log && \
    rm storage/logs/query.tmp

贡献

代码位于GitHub的Git仓库中。通过分支仓库并发送拉取请求,我们最欢迎贡献。

讨论在GitHub问题跟踪器中进行。

请始终记住在提交代码前检查lint和类型

composer run test:lint
composer run test:types

PS:如果需要修复lint,可以运行composer run lint几次,直到它通过绿色并自动修复。

为了测试特定的更改,您可以在项目中配置您的 composer.json 文件,具体操作如下:请在此处查看

如何进行单元测试

该包使用内存中的 sqlite 进行功能测试,因此在运行测试之前请确保您的系统已安装 ext-sqlite。

composer run test:unit

行为准则

我们遵循并支持 Laravel 行为准则,为了确保 Laravel 社区对所有成员都友好,请查看并遵守行为准则

作者和许可

这是一个由 @rstriquer 开源的项目,并使用 MIT 许可证授权。

rstriquer 保留在未来版本中更改许可证的权利,但理解并同意在此描述的 MIT 许可证下,之前的版本仍然受到该许可证的保护。