1
0
mirror of https://github.com/Seldaek/monolog.git synced 2025-10-23 01:26:11 +02:00

Fix for SyslogUdpHandler timezone issue

Hello!
As described in [this issue](https://github.com/Seldaek/monolog/issues/1350), SyslogUdpHandler doesn't respect `Logger` timezone setting for IETF (RFC-5424) syslog format.
This PR is a fix for this issue.
This commit is contained in:
Pierre Lannoy
2019-07-22 16:54:07 +02:00
committed by GitHub
parent 2e3c369667
commit 226bc5fdf4

View File

@@ -11,6 +11,7 @@
namespace Monolog\Handler; namespace Monolog\Handler;
use Monolog\DateTimeImmutable;
use Monolog\Logger; use Monolog\Logger;
use Monolog\Handler\SyslogUdp\UdpSocket; use Monolog\Handler\SyslogUdp\UdpSocket;
@@ -57,7 +58,7 @@ class SyslogUdpHandler extends AbstractSyslogHandler
{ {
$lines = $this->splitMessageIntoLines($record['formatted']); $lines = $this->splitMessageIntoLines($record['formatted']);
$header = $this->makeCommonSyslogHeader($this->logLevels[$record['level']]); $header = $this->makeCommonSyslogHeader($this->logLevels[$record['level']], $record['datetime']);
foreach ($lines as $line) { foreach ($lines as $line) {
$this->socket->write($line, $header); $this->socket->write($line, $header);
@@ -81,7 +82,7 @@ class SyslogUdpHandler extends AbstractSyslogHandler
/** /**
* Make common syslog header (see rfc5424 or rfc3164) * Make common syslog header (see rfc5424 or rfc3164)
*/ */
protected function makeCommonSyslogHeader(int $severity): string protected function makeCommonSyslogHeader(int $severity, DateTimeImmutable $datetime): string
{ {
$priority = $severity + $this->facility; $priority = $severity + $this->facility;
@@ -93,10 +94,13 @@ class SyslogUdpHandler extends AbstractSyslogHandler
$hostname = '-'; $hostname = '-';
} }
$date = $this->getDateTime();
if ($this->rfc === self::RFC3164) { if ($this->rfc === self::RFC3164) {
return "<$priority>" . $datetime->setTimezone(new \DateTimeZone('UTC'));
}
$date = $datetime->format($this->dateFormats[$this->rfc]);
if ($this->rfc === self::RFC3164) {
return "<$priority>" .
$date . " " . $date . " " .
$hostname . " " . $hostname . " " .
$this->ident . "[" . $pid . "]: "; $this->ident . "[" . $pid . "]: ";