日志写入量较高的情况下,需要考虑一个缓冲器来延迟写入日志,这里给的是Kafka的方法。
我的环境Laravel5.5
Kafka
需要安装的扩展包扩展包解释nmred/kafka-phpKafka的PHP扩展包
开始
首先,我们需要自定义一个 LogHandler 来替代 Laravel 内置的日志记录服务,于是,我在 app/Hubs 创建了 KafkaLogHandler.php :<?php
namespace App\Hubs;
use Monolog\Handler\AbstractProcessingHandler;
class KafkaLogHandler extends AbstractProcessingHandler
{
public function __construct()
{
$this->bubble = false;
}
protected function write(array $record)
{
$config = \Kafka\ProducerConfig::getInstance();
$config->setMetadataRefreshIntervalMs(10000);
$config->setMetadataBrokerList('127.0.0.1:32774');
$config->setBrokerVersion('1.0.0');
$config->setRequiredAck(1);
$config->setIsAsyn(false);