lemon777/gelf-php

一个用于将日志消息发送到兼容GELF的后端(如Graylog2)的PHP实现。

1.6.2 2018-12-17 07:48 UTC

README

Build Status Code Coverage Scrutinizer Quality Score

一个用于将日志文件发送到兼容GELF的后端(如Graylog2)的PHP实现。这个库遵循PSR标准,包括结构(4)、编码风格(12)和日志(3)。

它基于原始的Graylog2 gelf-phpmlehner的分支

原始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与我联系。

工具

  1. composer,最好是作为系统范围内的安装,即composer
  2. PHPUnit
  3. 可选:用于PSR-X兼容性检查的PHP_CodeSniffer

步骤

  1. 克隆仓库并进入它:git clone [email protected]:bzikarsky/gelf-php && cd gelf-php
  2. 安装依赖:composer install
  3. 运行单元测试:vendor/bin/phpunit
  4. 检查PSR兼容性:vendor/bin/phpcs --standard=PSR2 src tests examples