Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 带日志存储的laravel日志系统_Php_Laravel_<img Src="//i.stack.imgur.com/RUiNP.png" Height="16" Width="18" Alt="" Class="sponsor Tag Img">elasticsearch_Logging_Logstash - Fatal编程技术网 elasticsearch,logging,logstash,Php,Laravel,elasticsearch,Logging,Logstash" /> elasticsearch,logging,logstash,Php,Laravel,elasticsearch,Logging,Logstash" />

Php 带日志存储的laravel日志系统

Php 带日志存储的laravel日志系统,php,laravel,elasticsearch,logging,logstash,Php,Laravel,elasticsearch,Logging,Logstash,我有一个laravel应用程序,我想将我的日志存储到我的日志库中,并在kibana中查看它们。我在网上搜索了很多,以找到解决方案,但我没有找到任何好的源代码,是否有任何包可以将laravel日志存储到日志库??? 顺便说一下,我有我的logstash和kibana运行没有任何问题,我现在只需要一个数据源。 下面是我正在运行的elstic搜索: { name: "5351ced3b7a4", cluster_name: "elasticsearch"

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

    {
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!  
编辑: 日志记录配置文件:

<?php

use Monolog\Handler\StreamHandler;
use Monolog\Handler\SyslogUdpHandler;

return [

/*
|--------------------------------------------------------------------------
| Default Log Channel
|--------------------------------------------------------------------------
|
| This option defines the default log channel that gets used when writing
| messages to the logs. The name specified in this option should match
| one of the channels defined in the "channels" configuration array.
|
*/

'default' => env('LOG_CHANNEL', 'stack'),

/*
|--------------------------------------------------------------------------
| Log Channels
|--------------------------------------------------------------------------
|
| Here you may configure the log channels for your application. Out of
| the box, Laravel uses the Monolog PHP logging library. This gives
| you a variety of powerful log handlers / formatters to utilize.
|
| Available Drivers: "single", "daily", "slack", "syslog",
|                    "errorlog", "monolog",
|                    "custom", "stack"
|
*/

'channels' => [
    'stack' => [
        'driver' => 'stack',
        'channels' => ['daily'],
        'ignore_exceptions' => false,
    ],

    'single' => [
        'driver' => 'single',
        'path' => storage_path('logs/laravel.log'),
        'level' => 'debug',
    ],

    'daily' => [
        'driver' => 'daily',
        'path' => storage_path('logs/laravel.log'),
        'level' => 'debug',
        'days' => 14,
    ],

    'slack' => [
        'driver' => 'slack',
        'url' => env('LOG_SLACK_WEBHOOK_URL'),
        'username' => 'Laravel Log',
        'emoji' => ':boom:',
        'level' => 'critical',
    ],

    'papertrail' => [
        'driver' => 'monolog',
        'level' => 'debug',
        'handler' => SyslogUdpHandler::class,
        'handler_with' => [
            'host' => env('PAPERTRAIL_URL'),
            'port' => env('PAPERTRAIL_PORT'),
        ],
    ],

    'stderr' => [
        'driver' => 'monolog',
        'handler' => StreamHandler::class,
        'formatter' => env('LOG_STDERR_FORMATTER'),
        'with' => [
            'stream' => 'php://stderr',
        ],
    ],

    'syslog' => [
        'driver' => 'syslog',
        'level' => 'debug',
    ],

    'errorlog' => [
        'driver' => 'errorlog',
        'level' => 'debug',
    ],
    'logstash' => [
        'driver' => 'custom',
        'via'    => \App\LogstashLogger::class,
        'host'   => env('LOGSTASH_HOST', '127.0.0.1'),
        'port'   => env('LOGSTASH_PORT', 9200),
    ],
],

];
如中所述,这很容易做到

在config/logging.php中配置日志通道 创建自定义记录器工厂 这将使用udp将日志写入指定的主机和端口

现在要将日志条目写入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]);

感谢您的回答,但它在日志中给出如下错误:[2019-08-05 14:16:17]laravel.EMERGENCY:无法创建已配置的记录器。使用应急记录器。{异常:[对象]ReflectionExceptioncode:-1:Class App\\LogstashLogger不存在于/home/farshad/my projects/tika_acco/vendor/laravel/framework/src/Illumb/Container/Container.php:790是否可以向我们展示logging.php和LogstashLogger的内容?完成了这是我的tinker缓存,在重置之后,没有发生错误和日志,因此我假设它的工作正常ing.由于我在kibana中找不到它,有没有办法确定它是否有效?我猜如果logstash配置正确,它应该会出现在kibana中。但是我对logstash的经验很少,因此我无法真正帮助您。好的,我接受了您的答案,但我不知道我是否正在向日志发送数据塔什或还没有:
Log::channel('logstash')->info('Hello logstash!');
echo "hello world!" | nc 127.0.0.1 5000
$handler = new SocketHandler("tcp://127.0.0.1:5000");
$formatter = new LogstashFormatter('EXAMPLE');

$handler->setFormatter($formatter);

$logger =  new Logger('logstash.main', [$handler]);