Slim研讀筆記七亂入篇之Monolog(補)

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.');


如果你設置都是正確的,Monolog會發送日誌消息到Redis。由於Logstash監聽redis,它會讀取消息並將其發送到Elasticsearch。














發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章