Laravel 数据库日志 - 最佳实践是啥
Posted
技术标签:
【中文标题】Laravel 数据库日志 - 最佳实践是啥【英文标题】:Laravel Database Log - what is the best practiceLaravel 数据库日志 - 最佳实践是什么 【发布时间】:2014-11-12 15:25:59 【问题描述】:我认为我有一个很常见的问题,但我找不到任何“最佳实践”的答案。
我为我的客户开发了许多基于自制框架的小型 Web 应用程序。这些应用仅在非常特定的业务相关环境中使用,平均每年有 10 名用户使用它们。
每个应用程序都有非常不同的用途和背后的“技术”(有时是 Zend 模块、TCPDF 等......)。当然,偶尔用户会发现一些小错误(未处理异常,未设置数组...)。
问题是,用户数天或数周都不会就它进行交流,所以当我必须调试时,有时我没有我需要的所有信息(例如,如何重现它,它是哪条路线等...)。
对于我的自制框架(非常类似于 Laravel),我制作了一些处理这些错误的函数(使用 set_error_handler、register_shutdown_function……)。基本上,这些功能将在客户端的 mysql 数据库中创建一些日志条目。
我将这些功能用于两个目的:
-
记录用户操作和 php 错误 + 上下文(路由、控制器、一些数据流、php 预定义变量……)
出现问题时警告我(通过邮件、短信等...)
我可以有效地分析所有这些日志的唯一方法是当它们在数据库中时(我有一个 JQuery 表来优化它们以便更快地读取和跟踪)。否则,我只会使用文本文件,但我不能这么快地分析它们(信息太多)。
问题
我刚刚使用 Laravel 开始了一个项目(我现在将在我的所有项目中使用它),在阅读了一些文档之后,我发现 Laravel 使用 Monolog 来记录日志。但是,Monolog 没有 PDO 处理程序,有些人可能会说将 MySQL 用于日志是一个非常糟糕的主意(Can Laravel 4 log to a MySQL database?),我完全同意他们的看法。但这是我发现在处理大量时间有限的小型项目时进行有效错误纠正的唯一方法。
注意:我的客户只有 MySQL,我没有时间使用单元测试(小公司,没钱)。
是否有更好的解决方案来解决我的问题(以结构化的方式记录用户活动和 php 错误,捕获错误时的邮件/短信通知)使用一些我还不知道的 Laravel 魔法?
【问题讨论】:
查看Monolog handlers 看起来很简单。你只需要扩展抽象的AbstractProcessingHandler
类并实现write()
方法。看看其他处理程序,看看他们是如何做到的,然后自己实现 PDO 版本(看起来应该很容易)。
当然,这不是问题,但我正在寻找更好的解决方案(也许使用 *.ini 文件而不是 MySQL 或二进制文件)。因为 MySQL 每天仅针对日志(有 10 个用户)获得 10000 次插入。这是一个小应用程序,好的,但这是一些繁重的日志记录......
我遇到了同样的问题,这就是我开发 Laravel Stats Tracker 的原因:github.com/antonioribeiro/tracker
【参考方案1】:
当然,有许多工具可以为您监控日志文件,然后将它们整理成有意义的信息。他们可以对类似的错误进行分组,并为您提供有关导致错误的请求类型的详细数据。更好的是,您可以选择将用户数据与错误一起传递,以便准确了解导致问题的原因。
以下是我在此期间遇到的一些情况
Sentry Bugsnag(Laracasts 推荐) Papertrail【讨论】:
以上是关于Laravel 数据库日志 - 最佳实践是啥的主要内容,如果未能解决你的问题,请参考以下文章
MVC 验证 - 使用服务层保持 DRY - 最佳实践是啥?