diff --git a/composer.json b/composer.json index 077fa62..2045e4e 100644 --- a/composer.json +++ b/composer.json @@ -16,10 +16,10 @@ "minimum-stability": "stable", "require": { "php": "^8.1", - "ext-mbstring": "*", - "jrosset/exceptionhelper": "^1.0", - "jrosset/lasterrorexception": "^1.0", - "monolog/monolog": "^3.3" + "ext-mbstring": "*", + "jrosset/exceptionhelper": "^1.1", + "jrosset/lasterrorexception": "^1.1", + "monolog/monolog": "^3.8" }, "autoload": { "psr-4": { diff --git a/src/ExtendedMonolog/ExceptionLogger.php b/src/ExtendedMonolog/ExceptionLogger.php index 3ed8761..619c9cf 100644 --- a/src/ExtendedMonolog/ExceptionLogger.php +++ b/src/ExtendedMonolog/ExceptionLogger.php @@ -1,4 +1,5 @@ normalizeDirectory($dirPath, $historyNumberOfDays); + $this->normalizeDirectory($dirPath, $filenamePrefix, $historyNumberOfDays); parent::__construct( - $dirPath . date('Y-m-d') . '.log', + $dirPath . ($filenamePrefix ?? '') . date('Y-m-d') . '.log', $level, $bubble, $filePermission, @@ -53,14 +55,15 @@ class LogDirectoryHandler extends StreamHandler { /** * Normalize a directory: create if missing and clear old files * - * @param string $dirPath The directory path - * @param int $historyNumberOfDays The maximum number of history files to keep (in number of days) + * @param string $dirPath The directory path + * @param string|null $filenamePrefix The filename prefix + * @param int $historyNumberOfDays The maximum number of history files to keep (in number of days) * * @return void * * @throws Throwable If an error occurs */ - private function normalizeDirectory (string $dirPath, int $historyNumberOfDays = 30): void { + protected final function normalizeDirectory (string $dirPath, ?string $filenamePrefix, int $historyNumberOfDays = 30): void { if (!file_exists($dirPath) || !is_dir($dirPath)) { error_clear_last(); if (!mkdir($dirPath, 0755, true)) { @@ -78,7 +81,13 @@ class LogDirectoryHandler extends StreamHandler { if (!$fileInfo->isFile()) { continue; } - if (preg_match('/^(?\\d{4}-\\d{2}-\\d{2})(?:[_-].*)?\.log$/i', $fileInfo->getFilename(), $match) !== 1) { + if ( + preg_match( + '/^' . preg_quote($filenamePrefix ?? '', '/') . '(?\\d{4}-\\d{2}-\\d{2})(?:[_-].*)?\.log$/i', + $fileInfo->getFilename(), + $match + ) !== 1 + ) { continue; }