graylog2 / gelf-php
一个用于将日志消息发送到兼容GELF的后端(如Graylog2)的PHP实现。
Requires
- php: >=8.0
- psr/log: ^1|^2|^3
Requires (Dev)
- phpunit/phpunit: ^9.6|^10.1
- squizlabs/php_codesniffer: ^3.6
- vimeo/psalm: ^5.11
Provides
- psr/log-implementation: 3.0.0
- dev-master
- 2.0.x-dev
- 2.0.1
- 2.0.0
- 2.0.0-beta.1
- 1.7.1
- 1.7.0
- 1.6.5
- 1.6.4
- 1.6.3
- 1.6.2
- 1.6.1
- 1.6.0
- 1.5.5
- 1.5.4
- 1.5.3
- 1.5.2
- 1.5.1
- 1.5.0
- 1.4.2
- 1.4.1
- 1.4.0
- 1.3.0
- 1.2.3
- 1.2.2
- 1.2.1
- 1.2.0
- 1.1.2
- 1.1.1
- 1.1.0
- 1.0.4
- 1.0.3
- 1.0.2
- 1.0.1
- 1.0.0
- 0.1.x-dev
- 0.1.0
- dev-bz/move-to-github-actions
- dev-bz/psr-log-3
- dev-1.0-legacy
- dev-2.0-old
- dev-issues/25-docs
This package is auto-updated.
Last update: 2024-09-14 20:45:54 UTC
README
一个用于将日志文件发送到兼容GELF的后端(如Graylog2)的PHP实现。该库符合PSR标准,包括结构(4)、编码风格(1、2)和日志记录(3)。
它基于原始的Graylog2 gelf-php和mlehner的分支进行扩展。
原始graylog2/gelf-php的稳定版本和弃用
此实现于2013年12月19日成为官方PHP GELF库,并现在以graylog2/gelf-php
发布。同时,旧库被弃用,建议升级。
由于旧库从未发布过稳定版本,我们决定将其保留为v0.1
版本。这意味着:如果您有一个基于弃用库的项目,但没有时间升级到版本1.0,我们建议您将composer.json
更改如下
"require": {
// ...
"graylog2/gelf-php": "0.1.*"
// ...
}
运行额外的composer update
后,所有内容应该按预期工作。
关于5.6之前版本的PHP的说明
我尽量保持与旧版本的向后兼容性,但到了2021年,处理PHP 5.3.3 - 5.5.latest的依赖管理痛苦已经不再可行。它们已经停用多年了。
如果您在5.6以下版本中遇到困难,可以使用gelf-php版本1.6.5.
我故意没有从1.x到2.x进行符合semver的版本增加。
用法
推荐通过composer安装
通过运行composer require graylog2/gelf-php
或将它手动添加到composer.json
中,将gelf-php添加到composer.json
"require": {
// ...
"graylog2/gelf-php": "~1.5"
// ...
}
重新安装依赖:composer install
示例
有关使用示例,请访问/examples。
静默连接和传输错误
在许多情况下,项目会遇到不想为日志错误引发异常的情况。由于标准传输(如Udp、Tcp和Http)可能会产生一些噪音,如fwrite/fopen错误,gelf-php提供了IgnoreErrorTransportWrapper
类。这个类可以装饰任何AbstractTransport
,并将静默所有异常。
如何在实践中应用这一方法,可以在高级示例中看到。
如果您将gelf-php与monolog/symfony一起使用,以下代码片段可以帮助您正确设置日志后端。
假设您有一个典型的monolog配置
monolog: handlers: graylog: type: service id: monolog.gelf_handler level: debug
您只需正确定义symfony-service gelf-handler
services: monolog.gelf_handler: class: Monolog\Handler\GelfHandler arguments: - @gelf.publisher - 'warning' #monolog config is ignored with custom service level has to be redefined here (default : debug), you should probably use parameters eg: '%gelf_level%' gelf.publisher: class: Gelf\Publisher arguments: [@gelf.ignore_error_transport] gelf.ignore_error_transport: class: Gelf\Transport\IgnoreErrorTransportWrapper arguments: [@gelf.transport] gelf.transport: class: Gelf\Transport\UdpTransport # or Tcp, Amp, Http,... arguments: [] # ... whatever is required
HHVM
虽然HHVM受到支持并已进行测试,但仍有一些需要注意的限制
- 流上下文支持非常有限(截至2014年),特别是关于SSL,许多用例可能无法按预期(或根本无法)工作。
fwrite
的行为略有不同
当在HHVM上运行时,默认会跳过失败的单元测试。它们还都标注了@group hhvm-failures
。您可以通过在环境中设置FORCE_HHVM_TESTS=1
来强制运行这些失败测试。因此,您可以通过运行以下命令来具体检查HHVM失败的状况:
FORCE_HHVM_TESTS=1 hhvm vendor/bin/phpunit --group hhvm-failures
许可证
该库使用MIT许可证。有关详细信息,请参阅LICENSE文件。
开发与贡献
欢迎您修改、扩展和修复所有内容。:-)如果您有任何问题/建议等,您可以通过Twitter(@bzikarsky)或freenode#graylog2向我发消息。
工具
- composer,最好以系统范围内的
composer
安装 - PHPUnit
- 可选:PHP_CodeSniffer用于PSR-X兼容性检查
步骤
- 克隆仓库并进入:
git clone [email protected]:bzikarsky/gelf-php && cd gelf-php
- 安装依赖:
composer install
- 运行单元测试:
vendor/bin/phpunit
- 检查PSR兼容性:
vendor/bin/phpcs --standard=PSR2 src tests examples