【发布时间】:2020-05-06 23:10:14
【问题描述】:
我的config/logging.php 文件中有一个连接到我的logstash 实例的logstash 记录器:
'logstash' => [
'driver' => 'custom',
'via' => LogstashLogger::class,
'host' => env('LOGSTASH_HOST'),
'port' => env('LOGSTASH_PORT'),
],
使用 L6 和一个教程,我创建了这个 LogstashLogger:
<?php
namespace App\Logger;
use Monolog\Formatter\LogstashFormatter;
use Monolog\Handler\SocketHandler;
use Monolog\Logger;
use Psr\Log\LoggerInterface;
class LogstashLogger
{
/**
* @param array $config
* @return LoggerInterface
*/
public function __invoke(array $config): LoggerInterface
{
$handler = new SocketHandler("udp://{$config['host']}:{$config['port']}");
$handler->setFormatter(new LogstashFormatter(config('app.name')));
return new Logger(config('app.env'), [$handler]);
}
}
我正在开发的应用程序是按功能命名的,客户希望 Elasticsearch 中的功能特定日志,其中每个功能都提供一个索引。我们的想法是为每个索引设置自定义记录器。像这样的:
'feature1' => [
'driver' => 'custom',
'via' => LogstashLogger::class,
'host' => env('LOGSTASH_HOST'),
'port' => env('LOGSTASH_PORT'),
'index' => feature1-index
],
甚至更好:
'feature1' => [
'driver' => 'custom',
'via' => Feature1LogstashLogger::class,
'host' => env('LOGSTASH_HOST'),
'port' => env('LOGSTASH_PORT'),
],
我只是不知道Feature1LogstashLogger 的内容是什么。我已经搜遍了网,结果一无所获。
有什么想法吗?
【问题讨论】:
标签: elasticsearch logging logstash laravel-6