upaid/elk

ELK Logger for Laravel

1.0.2 2019-11-19 13:43 UTC

This package is not auto-updated.

Last update: 2024-09-18 12:36:15 UTC


README

Laravel日志格式化插件,用于ELK。
根据Spring Cloud Sleuth使用的格式支持跟踪/跨度ID。还添加了一些额外的字段。

安装

通过Composer

$ composer require upaid/elk

发布配置

运行以下命令以发布包配置文件

php artisan vendor:publish --provider="Upaid\Elk\Providers\ElkServiceProvider"

添加到.env文件中的密钥

ELK_SERVICE_NAME='app name'
ELK_BANKNAME='bank name'
ELK_CHANNEL='channel for recognizing applications by logstash'

或覆盖配置文件

<?php

return [
    'logstash' => [
        'serviceName' => 'app name',
        'bankName' => 'bank name',
        'channel' => 'channel for recognizing applications by logstash',
        'showLogType' => true,
    ]
];

更改默认日志字段及其顺序

要更改默认日志字段或其顺序,请覆盖配置文件中的fields属性

<?php

return [
    'logstash' => [
        'serviceName' => 'app name',
        'bankName' => 'bank name',
        'channel' => 'channel for recognizing applications by logstash',
        'fields' => [
            'timestamp',
            'severity' => 'level_name',
            'msg' => 'message',
            'span',
            'class' => 'class',
            'exception' => 'exception',
            'trace',
            'parent',
            'bank.name',
            'environment',
            'service',
            'channel',
            'context' => [
                'user.phone',
                'user.email',
                'card.id',
            ],
            'extra',
            'log_type',
        ],
        'showLogType' => true,
    ]
];

隐藏敏感数据

为了从日志文件内容中删除敏感数据,您可以向配置文件中添加mask.fields属性并指定应隐藏的字段值。字段值将被替换为mask.replacement属性。也可以根据在mask.patterns中指定的模式隐藏值。示例表示替换信用卡号。

<?php

return [
    'mask' => [
        'replacement' => '[MASKED]',
        'fields' => [
            'password',
            'new_password',
            'password_confirmation',
            'card_no',
            'cvc',
        ],
        'patterns' => [
            '/^(?:4[0-9]{12}(?:[0-9]{3})?|[25][1-7][0-9]{14}|6(?:011|5[0-9][0-9])[0-9]{12}|3[47][0-9]{13}|3(?:0[0-5]|[68][0-9])[0-9]{11}|(?:2131|1800|35\d{3})\d{11})$/',
        ],
    ]
];

添加日志通道

将elk通道添加到config/logging.php配置文件中的channels数组中,如下所示

'channels' => [
    'elk' => [
        'driver' => 'custom',
        'via' => \Upaid\Elk\Services\Logging\CreateCustomLogger::class,
        'log_name' => 'global'
    ],
    
    ...

在同一个文件中将默认日志通道设置为elk

return [
    'default' => 'elk',
    
    ...

或者当您想使用堆栈通道(默认通道是'stack')时,将elk添加到堆栈通道

'channels' => [

    ...
    
    'stack' => [
        'driver' => 'stack',
        'channels' => ['elk'],
    ],

    ...

使用方法

Laravel标准日志记录(到global.json)

Log::debug('An informational message.');

将日志记录到自定义日志文件名(在这种情况下为testlog.json)

use \Upaid\Elk\Services\Logging\Logger;

$logger = new Logger('testlog');
$logger->info('Hello World!');

更改日志

请参阅变更日志以获取有关最近更改的更多信息。

安全

如果您发现任何与安全相关的问题,请通过作者邮箱联系,而不是使用问题跟踪器。