From 226bc5fdf4d3d18ff5e4c1fb4274613711aeeaae Mon Sep 17 00:00:00 2001 From: Pierre Lannoy Date: Mon, 22 Jul 2019 16:54:07 +0200 Subject: [PATCH 1/3] 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. --- src/Monolog/Handler/SyslogUdpHandler.php | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/src/Monolog/Handler/SyslogUdpHandler.php b/src/Monolog/Handler/SyslogUdpHandler.php index 9381f008..c6badac6 100644 --- a/src/Monolog/Handler/SyslogUdpHandler.php +++ b/src/Monolog/Handler/SyslogUdpHandler.php @@ -11,6 +11,7 @@ namespace Monolog\Handler; +use Monolog\DateTimeImmutable; use Monolog\Logger; use Monolog\Handler\SyslogUdp\UdpSocket; @@ -57,7 +58,7 @@ class SyslogUdpHandler extends AbstractSyslogHandler { $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) { $this->socket->write($line, $header); @@ -81,7 +82,7 @@ class SyslogUdpHandler extends AbstractSyslogHandler /** * 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; @@ -93,10 +94,13 @@ class SyslogUdpHandler extends AbstractSyslogHandler $hostname = '-'; } - $date = $this->getDateTime(); - 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 . " " . $hostname . " " . $this->ident . "[" . $pid . "]: "; From 144f2299edaeec7621856dfec56ccbf088479951 Mon Sep 17 00:00:00 2001 From: Pierre Lannoy Date: Thu, 15 Aug 2019 23:23:59 +0200 Subject: [PATCH 2/3] Improvement for the fix To follow @Seldaek improvement recommendations. Sorry for the rookie mistakes :) --- src/Monolog/Handler/SyslogUdpHandler.php | 17 ++++++----------- 1 file changed, 6 insertions(+), 11 deletions(-) diff --git a/src/Monolog/Handler/SyslogUdpHandler.php b/src/Monolog/Handler/SyslogUdpHandler.php index c6badac6..18721174 100644 --- a/src/Monolog/Handler/SyslogUdpHandler.php +++ b/src/Monolog/Handler/SyslogUdpHandler.php @@ -82,7 +82,7 @@ class SyslogUdpHandler extends AbstractSyslogHandler /** * Make common syslog header (see rfc5424 or rfc3164) */ - protected function makeCommonSyslogHeader(int $severity, DateTimeImmutable $datetime): string + protected function makeCommonSyslogHeader(int $severity, DateTimeInterface $datetime): string { $priority = $severity + $this->facility; @@ -95,12 +95,12 @@ class SyslogUdpHandler extends AbstractSyslogHandler } if ($this->rfc === self::RFC3164) { - $datetime->setTimezone(new \DateTimeZone('UTC')); - } - $date = $datetime->format($this->dateFormats[$this->rfc]); + $datetime->setTimezone(new \DateTimeZone('UTC')); + } + $date = $datetime->format($this->dateFormats[$this->rfc]); - if ($this->rfc === self::RFC3164) { - return "<$priority>" . + if ($this->rfc === self::RFC3164) { + return "<$priority>" . $date . " " . $hostname . " " . $this->ident . "[" . $pid . "]: "; @@ -113,11 +113,6 @@ class SyslogUdpHandler extends AbstractSyslogHandler } } - protected function getDateTime(): string - { - return date($this->dateFormats[$this->rfc]); - } - /** * Inject your own socket, mainly used for testing */ From b615b158e4948c707eeb47df2af9773bc02ec4cb Mon Sep 17 00:00:00 2001 From: Jordi Boggiano Date: Fri, 16 Aug 2019 09:13:44 +0200 Subject: [PATCH 3/3] Fix class import and indenting --- src/Monolog/Handler/SyslogUdpHandler.php | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/Monolog/Handler/SyslogUdpHandler.php b/src/Monolog/Handler/SyslogUdpHandler.php index 18721174..c85ef5b8 100644 --- a/src/Monolog/Handler/SyslogUdpHandler.php +++ b/src/Monolog/Handler/SyslogUdpHandler.php @@ -11,7 +11,7 @@ namespace Monolog\Handler; -use Monolog\DateTimeImmutable; +use DateTimeInterface; use Monolog\Logger; use Monolog\Handler\SyslogUdp\UdpSocket; @@ -95,11 +95,11 @@ class SyslogUdpHandler extends AbstractSyslogHandler } if ($this->rfc === self::RFC3164) { - $datetime->setTimezone(new \DateTimeZone('UTC')); - } - $date = $datetime->format($this->dateFormats[$this->rfc]); + $datetime->setTimezone(new \DateTimeZone('UTC')); + } + $date = $datetime->format($this->dateFormats[$this->rfc]); - if ($this->rfc === self::RFC3164) { + if ($this->rfc === self::RFC3164) { return "<$priority>" . $date . " " . $hostname . " " .