Monolog是最为广泛的PHP日志库,它有几十个处理程序可记录日志到不同的程序中。柚子前段时间也曾写过一篇关于Monolog研读博文,分析了Monolog最重要两个类中的关键代码。这节,介绍一些实用性的东东,譬如:如何用Monolog开发ELK可以使用的日志。
Logstash是一个开源的日志管理工具,带有一个漂亮的界面Kibana。我不想在这里描述如何安装Logstash,具体详情可查看我的博文微服务分类下的文章。
步骤1:设置LogStash
我们将使用Redis作为Logstash输入Elasticsearch作为输出。请将下面的代码添加到LogStash配置:input {
redis {
key => phplogs
data_type => ['list']
}
}
output {
elasticsearch_http {
host => localhost
}
}
步骤2:设置Monolog
现在,LogStash运行,让我们来看看一些编码。你需要安装独monolog/monolog和predis/predis。<?php
// Be sure Monolog is installed via composer
require 'vendor/autoload.php'
use Monolog\Logger;
use Monolog\Handler\RedisHandler;
use Monolog\Formatter\LogstashFormatter;
use Predis\Client;
// Init a RedisHandler with a LogstashFormatter.
// The parameters may differ depending on your configuration of Redis.
// Important: The parameter 'logs' must be equal to the key you defined
// in your logstash configuration.
$redisHandler = new RedisHandler(new Client(), 'phplogs');
$formatter = new LogstashFormatter('my_app');
$redisHandler->setFormatter($formatter);
// Create a Logger instance with the RedisHandler
$logger = new Logger('logstash_test', array($redisHandler));
// Now you can start logging
$logger->info('Logging some infos to logstash.');