带有logstash的laravel日志系统

我有一个 Laravel 应用程序,我想将我的日志存储到我的 logstash 中并在 kibana 中查看它们我在网上搜索了很多以找到解决方案,但我没有找到任何好的来源,是否有任何软件包可以使用 laravel登录到logstash ??? 顺便说一下,我的 logstash 和 kibana 运行没有任何问题,我现在只需要一个数据源。这是我正在运行的 eltic 搜索:


    {

name: "5351ced3b7a4",

cluster_name: "elasticsearch",

cluster_uuid: "Ej5TRN8CQyGvemZlT3gAFA",

version: {

number: "7.1.1",

build_flavor: "oss",

build_type: "tar",

build_hash: "7a013de",

build_date: "2019-05-23T14:04:00.380842Z",

build_snapshot: false,

lucene_version: "8.0.0",

minimum_wire_compatibility_version: "6.8.0",

minimum_index_compatibility_version: "6.0.0-beta1"

},

tagline: "You Know, for Search"

}

编辑答案解释了我的方式,现在我在 laravel 的日志中收到此错误:


[2019-08-05 14:16:17] laravel.INFO: Hello logstash!  


互换的青春
浏览 199回答 2
2回答

30秒到达战场

正如这篇文章中所解释的,这很容易做到。在config/logging.php( docs ) 中配置日志记录通道    'channels' => [        // ... other channels like stack or single        'logstash' => [            'driver' => 'custom',            'via'    => \App\LogstashLogger::class,            'host'   => env('LOGSTASH_HOST', '127.0.0.1'),            'port'   => env('LOGSTASH_PORT', 4718),        ],    ],创建自定义 Logger 工厂 ( docs )namespace App;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('logstash.main', [$handler]);    }}这将使用monolog logstash 格式化程序通过 udp 将日志写入指定的主机和端口现在将日志条目写入 logstash 指定您刚刚创建的日志记录通道 ( docs )Log::channel('logstash')->info('Hello logstash!');

凤凰求蛊

由于 UCP 套接字连接,这对我不起作用,而不是调试它,我只是将其更改为 TCP 并且它起作用了。我首先在命令行上测试了它:echo "hello world!" | nc 127.0.0.1 5000如果这不起作用,那么您需要更新您的弹性配置,否则 s/udp/tcp.$handler = new SocketHandler("tcp://127.0.0.1:5000");$formatter = new LogstashFormatter('EXAMPLE');$handler->setFormatter($formatter);$logger =  new Logger('logstash.main', [$handler]);
打开App,查看更多内容
随时随地看视频慕课网APP