giacomofurlan / php-graylog-gelf
一个符合PSR-3规范的PHP日志记录器,用于将数据发送到graylog2(GELF格式)
1.1.2
2019-02-08 18:18 UTC
Requires (Dev)
- php-mock/php-mock-phpunit: ^2.1
- phpunit/phpunit: ^7.3
This package is auto-updated.
Last update: 2024-09-09 15:14:49 UTC
README
这个库旨在帮助开发者使用符合PSR-3规范的日志记录器和自定义(扩展)日志记录器,通过Graylog Extended Log Format将数据发送到Graylog 2。
类信息
GiacomoFurlan\Graylog\GELFLogger
它实现了Psr\Log\LoggerInterface接口,因此可以作为标准日志记录器使用。
它可以设置简短的消息、上下文和日志级别。
GiacomoFurlan\Graylog\ExtendedGELFLogger
它扩展了前面的类,但添加了gelf*函数来发送更复杂的信息。
它还允许日志入队,而不是立即发送。
gelfLoggelfAlertgelfCriticalgelfDebuggelfEmergencygelfErrorgelfInfogelfNoticegelfWarningflush
这些函数接受一个GELF对象,以及立即刷新消息的可能性(默认为true)。
flush函数刷新之前入队的消息。
GiacomoFurlan\Graylog\GELF
由ExtendedGELFLogger使用的用于数据传输的对象。它允许设置简短和完整消息、覆盖host信息以及向上下文中添加变量。
GiacomoFurlan\Graylog\UDPWriter
用于实例化日志记录器的WriterInterface的UDP实现。
如果有入队消息(使用flush设置为false写入,可使用扩展日志记录器更改),则在销毁时会尝试运行flush。
GiacomoFurlan\Graylog\TCPWriter
用于实例化日志记录器的WriterInterface的UDP实现。
如果有入队消息(使用flush设置为false写入,可使用扩展日志记录器更改),则在销毁时会尝试运行flush。
GiacomoFurlan\Graylog\GELFException
在尝试发送信息时可能会抛出。
- 代码
GELFException::CODE_MISSING_HOST:主机未设置或为空 - 代码
GELFException::CODE_CANT_SEND_MESSAGE:在发送数据包时发生错误
更多信息可以通过阅读异常的消息来收集。
使用示例
use GiacomoFurlan\Graylog\ExtendedGELFLogger; use GiacomoFurlan\Graylog\GELF; use GiacomoFurlan\Graylog\GELFException; use GiacomoFurlan\Graylog\GELFLogger; use GiacomoFurlan\Graylog\UDPWriter; use Psr\Log\LogLevel; // ... $address = 'ip.or.dns.of.graylog.server'; $port = 12201; // or whatever port is configured in Graylog 2 $hostId = 'MyHost'; // host identifier // Instantiate the writer $writer = new UDPWriter($address, $port); // Instantiate the logger (use one or the other... or both) $simpleLogger = new GELFLogger($writer, $hostId); $extendedLogger = new ExtendedGELFLogger($writer, $hostId); // ... // GELFLogger usage example try { // ... } catch (\Throwable $exception) { $simpleLogger->log(LogLevel::ERROR, $exception->getMessage(), ['code' => $exception->getCode()]); // or $simpleLogger->error($exception->getMessage(), ['code' => $exception->getCode()]); } // ExtendedGELFLogger usage example try { // ... } catch (\Throwable $exception) { $message = new GELF($exception->getMessage(), ['code' => $exception->getCode()]); $message->setHost('Overwritten host'); $message->setFullMessage($exception->getTraceAsString()); $message->setContextEntryset('fileName', $exception->getFile()); $message->setContextEntryset('fileLine', $exception->getLine()); $extendedLogger->gelfError($message); }