jenner / log-monitor
错误日志监控和警报
0.2
2016-01-29 07:34 UTC
Requires
- php: >=5.3.0
- jenner/simple_fork: 1.1.2
- monolog/monolog: 1.17.1
This package is auto-updated.
Last update: 2024-09-14 12:03:47 UTC
README
基于tail
命令的活跃日志监控。
为什么使用log-monitor?
有时候我们想知道crontab任务执行时发生了什么,或者PHP脚本写入到PHP错误日志中的错误信息,并且我们希望快速了解。log-monitor可以帮助您监控日志并通知需要了解的用户。
log-monitor能做什么?
- 通过tail命令监控日志
- 当出现错误时通知用户
- 自定义日志过滤接口,检查日志是否为错误
- 自定义通知接口,通知用户
- 自定义读取接口,如果您不想使用tail命令
如何使用log-monitor?
空谈不如代码,展示一下代码
$reader = new \Jenner\LogMonitor\Reader\Reader('/var/log/messages'); $filter = new Jenner\LogMonitor\Filter\MatchFilter("exception"); $notify = new \Jenner\LogMonitor\Notification\EchoNotification(); $process = new \Jenner\LogMonitor\MonitorTask($reader, $filter, $notify); $process->run(); $process->wait();
有三个接口:AbstractReader
、NotificationInterface
、FilterInterface
。
如果您想读取其他地方的日志,可以创建一个继承自AbstractReader
的类。
如果您想以不同的方式过滤日志,可以创建一个实现FilterInterface
的类。
如果您想向其他地方发送消息,可以创建一个实现NotificationInterface
的类。
它是如何工作的?
当您创建了一个MonitorTask对象并调用run
方法时,它将启动一个子进程并在子进程中调用tail
命令。然后它将从管道中读取并检查日志,通过过滤器判断是否为错误。如果有错误,它将调用通知来通知需要了解的用户。只需别忘了调用wait
方法等待子进程。
如果您要监控多个日志,可以使用Monitor来管理它们。展示一下代码
$reader = new \Jenner\LogMonitor\Reader\Reader('/var/log/messages'); $filter = new Jenner\LogMonitor\Filter\MatchFilter("exception"); $notify = new \Jenner\LogMonitor\Notification\EchoNotification(); $task = new \Jenner\LogMonitor\MonitorTask($reader, $filter, $notify); $monitor = new \Jenner\LogMonitor\Monitor(); $monitor->addTask($task); $monitor->start();
只需记住,当您调用start
方法时,别忘了调用wait
方法。