Laravel数据库日志 - 最佳实践是什么?

8
我有一个非常普遍的问题,但我找不到任何“最佳实践”答案。
我为我的客户开发了许多基于自制框架的小型Web应用程序。这些应用程序仅在非常特定的业务相关上下文中使用,在一年中的某个月份由平均十个用户使用。
每个应用程序都有非常不同的目的和“技术”背后(有时是Zend模块、TCPDF等)。当然,偶尔用户会发现一些小错误(未处理的异常、未设置的数组等)。
问题是,用户可能会几天或几周不与我沟通,因此当我需要调试时,有时我没有所有所需的信息(例如如何重现它、哪个路由、等等)。
对于我的自制框架(非常类似于Laravel),我编写了一些处理这些错误的函数(使用set_error_handler、register_shutdown_function等)。基本上,这些函数将在客户的MySQL数据库中创建一些日志条目。
我使用这些功能有两个目的:
1. 记录用户操作和php错误+上下文(路由、控制器、一些数据流、php预定义变量等) 2. 当出现问题时提醒我(通过电子邮件、短信等方式)
唯一能够有效分析所有这些日志的方法是将它们存储在数据库中(我有一个 JQuery 表格来优化快速阅读和跟踪)。否则,我只能使用文本文件,但我不能如此快速地分析它们(信息太多)。
问题:
我刚开始使用 Laravel(我将在所有项目中使用它),在阅读一些文档后,我发现 Laravel 使用 Monolog 进行日志记录。但是,Monolog 没有 PDO 处理程序,有些人可能会说使用 MySQL 进行日志记录是一个非常糟糕的主意( Can Laravel 4 log to a MySQL database?),我完全同意他们的观点。但这是我找到的唯一一种在工作时间有限的情况下高效解决 bug 的方法。
注:我的客户只有 MySQL,我没有时间使用单元测试(小公司,没有资金)。 是否有更好的解决方案可以通过某些 Laravel 魔法解决我的问题(以结构化方式记录用户活动和 php 错误,并在捕获错误时通过邮件/短信通知)?

1
浏览Monolog处理程序,它们似乎非常简单。您只需扩展抽象的AbstractProcessingHandler类并实现write()方法即可。查看其他处理程序以了解它们如何实现,然后自己实现PDO版本(看起来应该很容易)。 - Sverri M. Olsen
当然,这不是问题,但我正在寻找更好的解决方案(也许使用*.ini文件而不是MySQL或二进制文件)。因为MySQL每天仅用于日志记录(有10个用户)就会进行10000次插入。这是一个小应用程序,但这是一些繁重的日志记录... - Hrusdik
1
我曾经遇到过同样的问题,这就是为什么我开发了 Laravel 统计追踪器:https://github.com/antonioribeiro/tracker - Antonio Carlos Ribeiro
1个回答

7
当然,有许多工具可以监控您的日志文件,并将它们整合成有意义的信息。它们可以将相似的错误分组,并为您提供有关导致这些错误的请求类型的详细数据。更好的是,您可以选择在错误信息中传递用户数据,以便您可以确定导致问题的确切原因。
以下是我在此期间遇到的一些工具:
- Sentry - Bugsnag(由Laracasts推荐) - Papertrail

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接