yeebase/graylog

Neos Flow的Graylog异常处理器

安装: 23,831

依赖者: 0

建议者: 0

安全: 0

星标: 8

关注者: 8

分支: 6

开放问题: 0

类型:neos-yeebase

3.1.0 2018-06-06 12:11 UTC

This package is auto-updated.

Last update: 2024-09-17 21:19:05 UTC


README

The Yeebase.Graylog Flow package logs your exceptions as well as single messages to a central Graylog server. This package also provides a simple backend to log message of Flows Logger classes to a Graylog server.

它依赖于官方的 GELF php 包 https://github.com/bzikarsky/gelf-php

安装与配置

只需将 "yeebase/graylog" 添加到您的 composer.json 中的依赖项,并在项目的根目录中运行 "composer update",或者简单地从项目的根目录执行

composer require yeebase/graylog

配置您的Graylog服务器

Yeebase:
  Graylog:
    host: '127.0.0.1'
    port: 12201
    chunksize: 'wan'

日志后端

要将GraylogBackend配置为默认日志后端,请在您的 Settings.yaml 中放入以下内容

Neos:
  Flow:
    log:
      systemLogger:
        backend: Yeebase\Graylog\Log\Backend\GraylogBackend
      securityLogger:
        backend: Yeebase\Graylog\Log\Backend\GraylogBackend
      sqlLogger:
        backend: Yeebase\Graylog\Log\Backend\GraylogBackend
      i18nLogger:
        backend: Yeebase\Graylog\Log\Backend\GraylogBackend

记录异常

激活异常处理器,并在 Settings.yaml 中配置与您的 graylog 服务器的连接

Neos:
  Flow:
    error:
      exceptionHandler:
        className: 'Yeebase\Graylog\Error\GraylogExceptionHandler'

现在所有显示给Web或CLI的异常都将记录到graylog。

注意:对于 Development 环境,Neos.Flow 包会覆盖此设置。请确保在正确的上下文 Settings.yaml 中添加此配置。

如果您还想将 所有 异常记录到graylog,应替换系统Logger。这将记录所有使用 SystemLogger 记录的错误,并将它们同时记录到磁盘和 Graylog。默认情况下,Flow 只会将单行记录到系统日志,即“也请参阅 ... .txt”。GraylogLogger 也会记录完整的异常。

Neos:
  Flow:
    log:
      systemLogger:
        logger: Yeebase\Graylog\Log\GraylogLogger

过滤异常

要跳过某些异常的记录,您可以使用 skipStatusCodes 设置

Yeebase:
  Graylog:
     # don't log any exceptions that would result in a HTTP status 403 (access denied) / 404 (not found)
    skipStatusCodes: [403, 404]

从版本 2.1 开始,您还可以使用 renderingGroups Flow 设置作为替代,例如排除某些异常 的记录

Neos:
  Flow:
    error:
      exceptionHandler:
        className: 'Yeebase\Graylog\Error\GraylogExceptionHandler'
        renderingGroups:
          'accessDeniedExceptions':
            matchingExceptionClassNames: ['Neos\Flow\Security\Exception\AccessDeniedException']
            options:
              logException: false

手动记录

如果您希望将常规日志消息记录到 Graylog 服务器,请使用提供的 GraylogLoggerInterface

use Neos\Flow\Annotations as Flow;
use Yeebase\Graylog\Log\GraylogLoggerInterface;

class SomeClass 
{
    /**
     * @Flow\Inject
     * @var GraylogLoggerInterface
     */
    protected $graylogLogger;

    public function yourMethod()
    {
      $this->graylogLogger->log('Your Message')
    }
}

默认情况下,当 Flow 在 Development 环境下运行时,消息也会记录到 SystemLoggerInterface。您可以使用设置启用或禁用此功能

Yeebase:
  Graylog:
    Logger:
      backendOptions:
        alsoLogWithSystemLogger: true

扩展消息上下文

默认情况下,此包会将一些值发送到 graylog,您可以使用这些值进行过滤。例如,异常有一些字段,如 reference_coderesponse_status_code 等。您可以通过 Settings.yaml 扩展这些值。只需将值数组传递给 Yeebase.Graylog.messageContext 即可。这对于将一些静态值传递到日志中并在 Graylog 中进行过滤非常有用。

Yeebase:
  Graylog:
    messageContext:
      app_context: 'stage'