lemon777 / gelf-php
一个用于将日志消息发送到兼容GELF的后端(如Graylog2)的PHP实现。
Requires
- php: >=5.3.9
- paragonie/constant_time_encoding: ^1|^2
- psr/log: ~1.0
Requires (Dev)
- phpunit/phpunit: ~4.8.36
- squizlabs/php_codesniffer: ~2.0
Provides
- psr/log-implementation: ~1.0
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
后,一切应该都能按预期工作。
用法
推荐通过composer安装
将gelf-php添加到composer.json
,可以通过运行composer require graylog2/gelf-php
或手动定义它
"require": {
// ...
"graylog2/gelf-php": "~1.5"
// ...
}
重新安装依赖项:composer install
示例
有关使用示例,请访问/examples。
静音连接和传输错误
通常,项目会遇到不想对日志错误引发异常的情况。由于标准的传输方式如Udp、Tcp和Http可能会对fwrite/fopen错误产生一些噪音,gelf-php提供了IgnoreErrorTransportWrapper
。这个类可以装饰任何AbstractTransport
,并将静音所有异常。
这在高级示例中可以看到实际应用。
如果您与monolog/symfony一起使用gelf-php,以下片段应该有助于您正确设置您的日志后端。
假设您有一个典型的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] 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
- 可选:用于PSR-X兼容性检查的PHP_CodeSniffer
步骤
- 克隆仓库并进入它:
git clone [email protected]:bzikarsky/gelf-php && cd gelf-php
- 安装依赖:
composer install
- 运行单元测试:
vendor/bin/phpunit
- 检查PSR兼容性:
vendor/bin/phpcs --standard=PSR2 src tests examples