PHP 的错误日志记录存储和查看问题

现在的错误日志存在文件夹里面,由于搞了负载均衡, 有多台服务器,所以错误信息会落在多台服务器,所以使用 arcanedev/log-viewer 包查看错误日志只能看到一台服务器上的。

自己的解决方案:

    1. 更改 monlog 的handler, 比如换成mysql或者redis, 但是查询日志的时候好像就不能用 arcanedev/log-viewer
    1. 文件系统改为使用 ftp , 将错误信息存在某一台服务器上
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 8

两种方案都不合适。原因:

方案1: MySQL 性能会被拖死,非时序数据库不适合做此类应用;Redis 持久化比较困难,同样不适合。
方案2: 使用 FTP 或 NFS 将会导致 IO 等待时间过长,PHP-FPM 不堪重负。

目前我了解到的方案:

  1. LogDNA
  2. rsyslog
  3. ELK

难度系数由上到下逐渐增加,可自行了解参考。

5年前 评论
Shuyi

我是基本不放本地Log,用 Bugsnag 云报错,除了可以看到错误以外,还可以看到当时数据库发生了什么, Session 里面有什么, 请求上面有什么。除了 Bugsnag , 还有一堆其他的类似的服务,比如说 Sentry, HoneyBadger

5年前 评论

@Shuyi 日志和 Exception Capture 实际上是两个不同的方向。

Logging 可分级,针对不同的事件记录程序运行的过程,而不必中断请求的处理;可用于日常的统计分析。

Exception / Error Capture 则主要用于发生意外错误时,捕捉 Context 并发送到 Sentry、Bugsnag 等系统以供告警或 BUG 追踪。

5年前 评论

@Shuyi 你这个用于报错比较合适,sentry这些使用次数有限制

5年前 评论
Shuyi

@Wi1dcard 同意,不过就我而言,我的生产环境不会出大乱子,只需要Bugsnag帮我拿Bug罢了。。。不过你说的Logging,听起来是 HoneyBadger.io 做的事情,他们远程帮你整理Log,可以看看哟,不过我是没有用过。。。

5年前 评论

@Shuyi 嗯呐,监控异常之类的信息 Bugsnag 和 Sentry 挺合适的,国内似乎还有 OneAPM 也在做这方面。另外,关于 HoneyBadger.io:

Honeybadger is a service that watches your applications in production and lets you know about errors and outages.

文档 中似乎并没有介绍关于 Log 的特性。

5年前 评论
Shuyi

@Wi1dcard 额,HoneyBadger可能是我看花眼了 。。。 我比较熟悉的是 PaperTrail , 不过那是拿来整理Linux日志,不知道PHP的应用如何 。。。

5年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!