jenner/log-monitor

错误日志监控和警报

0.2 2016-01-29 07:34 UTC

This package is auto-updated.

Last update: 2024-09-14 12:03:47 UTC


README

Join the chat at https://gitter.im/huyanping/log-monitor Latest Stable Version Total Downloads Latest Unstable Version License travis Scrutinizer Code Quality Code Coverage

基于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();

有三个接口:AbstractReaderNotificationInterfaceFilterInterface
如果您想读取其他地方的日志,可以创建一个继承自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方法。