为了账号安全,请及时绑定邮箱和手机立即绑定

带有logstash的laravel日志系统

带有logstash的laravel日志系统

PHP
互换的青春 2021-11-13 16:04:35
我有一个 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!  
查看完整描述

2 回答

?
30秒到达战场

TA贡献1828条经验 获得超6个赞

正如这篇文章中所解释的,这很容易做到。


在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!');


查看完整回答
反对 回复 2021-11-13
?
凤凰求蛊

TA贡献1825条经验 获得超4个赞

由于 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]);


查看完整回答
反对 回复 2021-11-13
  • 2 回答
  • 0 关注
  • 198 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信