yeebase / graylog
Neos Flow的Graylog异常处理器
Requires
- graylog2/gelf-php: ~1.5
- neos/flow: ^5.0
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_code
、response_status_code
等。您可以通过 Settings.yaml 扩展这些值。只需将值数组传递给 Yeebase.Graylog.messageContext
即可。这对于将一些静态值传递到日志中并在 Graylog 中进行过滤非常有用。
Yeebase: Graylog: messageContext: app_context: 'stage'