nzo / elk-bundle

用于管理 ELK Stack(Elasticsearch、Logstash、Kibana)日志的 Symfony 扩展包

安装次数: 475

依赖者: 0

建议者: 0

安全性: 0

星标: 0

关注者: 1

分支: 0

开放问题: 0

类型:symfony-bundle

v0.1.1 2020-12-22 14:51 UTC

This package is auto-updated.

Last update: 2024-09-22 22:48:39 UTC


README

Build Status Latest Stable Version

NzoElkBundle 是一个用于通过 ELK 堆栈(Elasticsearch、Logstash、Kibana)管理日志的 Symfony 扩展包。

兼容 Symfony >= 4.4

安装

通过 Composer

$ composer require nzo/elk-bundle

在 config/bundles.php 中注册扩展包(无需 Flex)

// config/bundles.php

return [
    // ...
    Nzo\ElkBundle\NzoElkBundle::class => ['all' => true],
];

配置您的应用配置 config.yml

# config/packages/nzo_elk.yaml
nzo_elk:
    app_name: '%env(ELK_APP_NAME)%'
    app_environment: '%env(ELK_APP_ENVIRONMENT)%'

    log_encryptor:                               # Optional
        secret_key: '%env(ELK_LOG_SECRET)%'      # Required
        fields:                                  # Required 
            - email
            - username
            - ...


# .env
ELK_APP_NAME=app
ELK_APP_ENVIRONMENT=local            

使用方法

使用 JSON 格式化器

在处理器的定义中,只需添加 nzo.elk.monolog.formatter 格式化器。

示例

api_errors:
    type: stream
    path: '%kernel.logs_dir%/%kernel.environment%.elk_api_errors.log'
    level: errors
    channels: ['api']
    formatter: nzo.elk.monolog.formatter

加密日志

此扩展包提供了一种安全的方式来加密日志中发送的敏感数据。

要这样做,您必须启用并设置 log_encryptor 配置和 secret_key

fields 配置中,您必须添加要加密的日志上下文字段。这些字段必须在 ELK 堆栈中共享,以便启用其解密。

设置
// config/bundles.php

return [
    // ...
    Nzo\UrlEncryptorBundle\NzoUrlEncryptorBundle::class => ['all' => true],
];
配置
# config/packages/nzo_elk.yaml
nzo_elk:
    # ...
    log_encryptor:
        secret_key: '%env(ELK_LOG_SECRET)%'
        fields:
            - email
            - username
            - location.address.code



# .env
ELK_LOG_SECRET=SOME_SECRET
使用方法
public function log()
{
    $context = [
        'name' => 'Wolverine',
        'username' => 'test',
        'email' => 'test@example.fr',
        'location' => [
            'address' => [
                'code' => '75000',
                'city' => 'Paris',
                'country' => 'France'
            ]
        ]
    ];

    $this->logger->error('Error', $context);
}

// The log output will be like:
[
    'name' => 'Wolverine',
    'username' => 'FbEtXzIRop0FFK31MdC+McgbWybD...',
    'email' => 'DNXDcuQDn7LbwlgLKnAgPsn...',
    'location' => [
        'address' => [
            'code' => 'FnzOIHjMZDzDmSSC...',
            'city' => 'pdjKJBDfd2Khdfkhbfk....',
            'country' => 'France'
        ]
    ]
]

许可证

此扩展包受 MIT 许可证保护。请参阅扩展包中的完整许可证。

查看 LICENSE