From 6d17d0c89ff2432e5ff886b6a99b1f805a65e4de Mon Sep 17 00:00:00 2001 From: Luis Cordova Date: Mon, 4 Nov 2013 23:05:35 -0500 Subject: [PATCH 1/6] plug #245 log rotate with setTimedFilename --- src/Monolog/Handler/RotatingFileHandler.php | 40 +++++++++++++++++---- 1 file changed, 33 insertions(+), 7 deletions(-) diff --git a/src/Monolog/Handler/RotatingFileHandler.php b/src/Monolog/Handler/RotatingFileHandler.php index 0850134d..bf37e2a1 100644 --- a/src/Monolog/Handler/RotatingFileHandler.php +++ b/src/Monolog/Handler/RotatingFileHandler.php @@ -28,6 +28,8 @@ class RotatingFileHandler extends StreamHandler protected $maxFiles; protected $mustRotate; protected $nextRotation; + protected $filenameFormat; + protected $dateFormat; /** * @param string $filename @@ -40,6 +42,8 @@ class RotatingFileHandler extends StreamHandler $this->filename = $filename; $this->maxFiles = (int) $maxFiles; $this->nextRotation = new \DateTime('tomorrow'); + $this->filenameFormat = '%1$s-%2$s'; + $this->dateFormat = 'Y-m-d'; parent::__construct($this->getTimedFilename(), $level, $bubble); } @@ -88,12 +92,7 @@ class RotatingFileHandler extends StreamHandler return; } - $fileInfo = pathinfo($this->filename); - $glob = $fileInfo['dirname'].'/'.$fileInfo['filename'].'-*'; - if (!empty($fileInfo['extension'])) { - $glob .= '.'.$fileInfo['extension']; - } - $logFiles = glob($glob); + $logFiles = glob($this->getGlobPattern()); if ($this->maxFiles >= count($logFiles)) { // no files to remove return; @@ -114,11 +113,38 @@ class RotatingFileHandler extends StreamHandler protected function getTimedFilename() { $fileInfo = pathinfo($this->filename); - $timedFilename = $fileInfo['dirname'].'/'.$fileInfo['filename'].'-'.date('Y-m-d'); + $timedFilename = sprintf( + $fileInfo['dirname'] . '/' . $this->filenameFormat, + $fileInfo['filename'], + date($this->dateFormat) + ); + if (!empty($fileInfo['extension'])) { $timedFilename .= '.'.$fileInfo['extension']; } return $timedFilename; } + + protected function getGlobPattern() + { + $fileInfo = pathinfo($this->filename); + $glob = sprintf( + $fileInfo['dirname'] . '/' . $this->filenameFormat, + $fileInfo['filename'], + '*' + ); + if (!empty($fileInfo['extension'])) { + $glob .= '.'.$fileInfo['extension']; + } + + return $glob; + } + + public function setTimedFilename($filenameFormat, $dateFormat, $glob) + { + $this->filenameFormat = $filenameFormat; + $this->dateFormat = $dateFormat; + $this->glob = $glob; + } } From 6489e364d83121723e1d7f4c52b11a8732c328fe Mon Sep 17 00:00:00 2001 From: Luis Cordova Date: Tue, 5 Nov 2013 09:56:19 -0500 Subject: [PATCH 2/6] remove unused glob member --- src/Monolog/Handler/RotatingFileHandler.php | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/Monolog/Handler/RotatingFileHandler.php b/src/Monolog/Handler/RotatingFileHandler.php index bf37e2a1..8df1692c 100644 --- a/src/Monolog/Handler/RotatingFileHandler.php +++ b/src/Monolog/Handler/RotatingFileHandler.php @@ -141,10 +141,9 @@ class RotatingFileHandler extends StreamHandler return $glob; } - public function setTimedFilename($filenameFormat, $dateFormat, $glob) + public function setTimedFilename($filenameFormat, $dateFormat) { $this->filenameFormat = $filenameFormat; $this->dateFormat = $dateFormat; - $this->glob = $glob; } } From 93469c4108b6518d8c011b8406da8f628a454427 Mon Sep 17 00:00:00 2001 From: Luis Cordova Date: Tue, 5 Nov 2013 10:07:35 -0500 Subject: [PATCH 3/6] move public method before protected ones --- src/Monolog/Handler/RotatingFileHandler.php | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/Monolog/Handler/RotatingFileHandler.php b/src/Monolog/Handler/RotatingFileHandler.php index 8df1692c..bf7ef1a8 100644 --- a/src/Monolog/Handler/RotatingFileHandler.php +++ b/src/Monolog/Handler/RotatingFileHandler.php @@ -60,6 +60,12 @@ class RotatingFileHandler extends StreamHandler } } + public function setTimedFilename($filenameFormat, $dateFormat) + { + $this->filenameFormat = $filenameFormat; + $this->dateFormat = $dateFormat; + } + /** * {@inheritdoc} */ @@ -140,10 +146,4 @@ class RotatingFileHandler extends StreamHandler return $glob; } - - public function setTimedFilename($filenameFormat, $dateFormat) - { - $this->filenameFormat = $filenameFormat; - $this->dateFormat = $dateFormat; - } } From a72862ffc3a12b4d6b1f3180a36da1f3da366727 Mon Sep 17 00:00:00 2001 From: Luis Cordova Date: Tue, 5 Nov 2013 10:10:35 -0500 Subject: [PATCH 4/6] switch from setTimedFilename to setFilenameFormatParams --- src/Monolog/Handler/RotatingFileHandler.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Monolog/Handler/RotatingFileHandler.php b/src/Monolog/Handler/RotatingFileHandler.php index bf7ef1a8..db6e06ae 100644 --- a/src/Monolog/Handler/RotatingFileHandler.php +++ b/src/Monolog/Handler/RotatingFileHandler.php @@ -60,7 +60,7 @@ class RotatingFileHandler extends StreamHandler } } - public function setTimedFilename($filenameFormat, $dateFormat) + public function setFilenameFormatParams($filenameFormat, $dateFormat) { $this->filenameFormat = $filenameFormat; $this->dateFormat = $dateFormat; From b140ff1bb0cf7e206c2ff8f1465762ea719dab42 Mon Sep 17 00:00:00 2001 From: Luis Cordova Date: Tue, 5 Nov 2013 13:33:39 -0500 Subject: [PATCH 5/6] change name according to Seldaek recommendation --- src/Monolog/Handler/RotatingFileHandler.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Monolog/Handler/RotatingFileHandler.php b/src/Monolog/Handler/RotatingFileHandler.php index db6e06ae..28a0c816 100644 --- a/src/Monolog/Handler/RotatingFileHandler.php +++ b/src/Monolog/Handler/RotatingFileHandler.php @@ -60,7 +60,7 @@ class RotatingFileHandler extends StreamHandler } } - public function setFilenameFormatParams($filenameFormat, $dateFormat) + public function setFilenameFormat($filenameFormat, $dateFormat) { $this->filenameFormat = $filenameFormat; $this->dateFormat = $dateFormat; From fb542f21643a04a151c34d322e9d28f7b3764a96 Mon Sep 17 00:00:00 2001 From: Luis Cordova Date: Tue, 5 Nov 2013 13:54:59 -0500 Subject: [PATCH 6/6] address second comment on using str_replace instead of printf for setting filename format expression --- src/Monolog/Handler/RotatingFileHandler.php | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/src/Monolog/Handler/RotatingFileHandler.php b/src/Monolog/Handler/RotatingFileHandler.php index 28a0c816..18a0fcc5 100644 --- a/src/Monolog/Handler/RotatingFileHandler.php +++ b/src/Monolog/Handler/RotatingFileHandler.php @@ -42,7 +42,7 @@ class RotatingFileHandler extends StreamHandler $this->filename = $filename; $this->maxFiles = (int) $maxFiles; $this->nextRotation = new \DateTime('tomorrow'); - $this->filenameFormat = '%1$s-%2$s'; + $this->filenameFormat = '{filename}-{date}'; $this->dateFormat = 'Y-m-d'; parent::__construct($this->getTimedFilename(), $level, $bubble); @@ -119,10 +119,10 @@ class RotatingFileHandler extends StreamHandler protected function getTimedFilename() { $fileInfo = pathinfo($this->filename); - $timedFilename = sprintf( - $fileInfo['dirname'] . '/' . $this->filenameFormat, - $fileInfo['filename'], - date($this->dateFormat) + $timedFilename = str_replace( + array('{filename}', '{date}'), + array($fileInfo['filename'], date($this->dateFormat)), + $fileInfo['dirname'] . '/' . $this->filenameFormat ); if (!empty($fileInfo['extension'])) { @@ -135,10 +135,10 @@ class RotatingFileHandler extends StreamHandler protected function getGlobPattern() { $fileInfo = pathinfo($this->filename); - $glob = sprintf( - $fileInfo['dirname'] . '/' . $this->filenameFormat, - $fileInfo['filename'], - '*' + $glob = str_replace( + array('{filename}', '{date}'), + array($fileInfo['filename'], '*'), + $fileInfo['dirname'] . '/' . $this->filenameFormat ); if (!empty($fileInfo['extension'])) { $glob .= '.'.$fileInfo['extension'];