Dependencies
- PHP >= 5.3.0
- Monolog == 1.17.2
- fluent-logger-php == v1.0.0
FluentHandler.php
use Monolog\Logger;
use Monolog\Handler\AbstractProcessingHandler;
use Fluent\Logger\Entity;
use Fluent\Logger\FluentLogger;
class FluentHandler extends AbstractProcessingHandler
{
protected $logger;
public function __construct($host = FluentLogger::DEFAULT_ADDRESS,
$port = FluentLogger::DEFAULT_LISTEN_PORT,
$level = Logger::DEBUG,
$bubble = true)
{
parent::__construct($level, $bubble);
$this->logger = new FluentLogger($host, $port);
}
/**
* {@inheritdoc}
*/
protected function write(array $record)
{
$tag = $record['channel'] . '.' . strtolower($record['level_name']);
$time = $record['datetime']->getTimestamp();
$data = $record['context'];
$data['message'] = $record['message'];
$entity = new Entity($tag, $data, $time);
$this->logger->post2($entity);
}
}
index.php
$autoload = include realpath(__DIR__ . '/vendor/autoload.php');
use Monolog\Logger;
include realpath(__DIR__ . '/FluentHandler.php');
$log = new Logger('fluentd.test');
$log->pushHandler(new FluentHandler("unix:///var/run/td-agent/td-agent.sock"));
$log->warning('message', array("from"=>"userA", "to"=>"userB"));