nzo / elk-bundle
用于管理 ELK Stack(Elasticsearch、Logstash、Kibana)日志的 Symfony 扩展包
v0.1.1
2020-12-22 14:51 UTC
Requires
- php: >=7.2.5
- minwork/array: ^1.13
- nzo/url-encryptor-bundle: ^6.0
- symfony/config: ^4.4 || ^5.0
- symfony/framework-bundle: ^4.4 || ^5.0
- symfony/monolog-bundle: ^3.5
Requires (Dev)
- phpunit/phpunit: ^6.5 || ^8.5
- symfony/phpunit-bridge: ^4.4 || ^5.0
Conflicts
- symfony/dependency-injection: <4.4
- symfony/http-kernel: <4.4
This package is auto-updated.
Last update: 2024-09-22 22:48:39 UTC
README
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