giacomofurlan/php-graylog-gelf

一个符合PSR-3规范的PHP日志记录器,用于将数据发送到graylog2(GELF格式)

1.1.2 2019-02-08 18:18 UTC

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*函数来发送更复杂的信息。

它还允许日志入队,而不是立即发送。

  • gelfLog
  • gelfAlert
  • gelfCritical
  • gelfDebug
  • gelfEmergency
  • gelfError
  • gelfInfo
  • gelfNotice
  • gelfWarning
  • flush

这些函数接受一个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);
}