我在laravel中搜索使用logstash的日志教程,发现它是这样的:
首先创建一个logstashLogger类:
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('logstash.main', [$handler]);
}
}
然后我将logstash添加到logging.php
中的通道:
'logstash' => [
'driver' => 'custom',
'via' => \App\LogstashLogger::class,
'host' => env('LOGSTASH_HOST', '127.0.0.1'),
'port' => env('LOGSTASH_PORT', 4718),
],
最后我是这样写的:
Log::channel('logstash')->debug('Logging to logstash');
而问题是我在哪里可以看到日志,索引是什么?这很混乱
logstash.conf:
input {
beats {
port => 5044
}
}
output {
elasticsearch {
hosts => ["http://localhost:9200"]
index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}"
#user => "elastic"
#password => "changeme"
}
}
1条答案
按热度按时间huwehgph1#
您的logstash配置在端口
5044
上只有一个beats
输入,但是您的应用程序被配置为使用端口4718
上的UDP
发送日志。你需要有一个UDP输入监听那个端口,你还需要在你的elasticsearch输出中指定一个indexname。
侦听应用程序日志并将其发送到elasticsearch的配置如下所示: