X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FUtil%2FLogger%2FStreamLogger.php;h=3031461061f3a20299d6f1204210bfc18317a92b;hb=d1435bef6144f517ae4392d200e2eb14114adf1c;hp=ad1b152d9e117c5f2fe098db86e9c12b6a67db2c;hpb=81ba5376d0ef778ccad48d4869d43787f8dc9f09;p=friendica.git diff --git a/src/Util/Logger/StreamLogger.php b/src/Util/Logger/StreamLogger.php index ad1b152d9e..3031461061 100644 --- a/src/Util/Logger/StreamLogger.php +++ b/src/Util/Logger/StreamLogger.php @@ -9,7 +9,7 @@ use Psr\Log\LogLevel; /** * A Logger instance for logging into a stream (file, stdout, stderr) */ -class StreamLogger extends AbstractFriendicaLogger +class StreamLogger extends AbstractLogger { /** * The minimum loglevel at which this logger will be triggered @@ -35,6 +35,12 @@ class StreamLogger extends AbstractFriendicaLogger */ private $pid; + /** + * An error message + * @var string + */ + private $errorMessage; + /** * Translates LogLevel log levels to integer values * @var array @@ -98,7 +104,7 @@ class StreamLogger extends AbstractFriendicaLogger protected function addEntry($level, $message, $context = []) { if (!array_key_exists($level, $this->levelToInt)) { - throw new \InvalidArgumentException('The level "%s" is not valid', $level); + throw new \InvalidArgumentException(sprintf('The level "%s" is not valid.', $level)); } $logLevel = $this->levelToInt[$level]; @@ -109,7 +115,6 @@ class StreamLogger extends AbstractFriendicaLogger $this->checkStream(); - $this->stream = fopen($this->url, 'a'); $formattedLog = $this->formatLog($level, $message, $context); fwrite($this->stream, $formattedLog); } @@ -129,7 +134,7 @@ class StreamLogger extends AbstractFriendicaLogger $record = array_merge($record, ['uid' => $this->logUid, 'process_id' => $this->pid]); $logMessage = ''; - $logMessage .= DateTimeFormat::localNow() . ' '; + $logMessage .= DateTimeFormat::utcNow() . ' '; $logMessage .= $this->channel . ' '; $logMessage .= '[' . strtoupper($level) . ']: '; $logMessage .= $this->psrInterpolate($message, $context) . ' '; @@ -151,12 +156,14 @@ class StreamLogger extends AbstractFriendicaLogger } $this->createDir(); - $this->stream = fopen($this->url, 'a'); + set_error_handler([$this, 'customErrorHandler']); + $this->stream = fopen($this->url, 'ab'); + restore_error_handler(); if (!is_resource($this->stream)) { $this->stream = null; - throw new \UnexpectedValueException(sprintf('The stream or file "%s" could not be opened.', $this->url)); + throw new \UnexpectedValueException(sprintf('The stream or file "%s" could not be opened: ' . $this->errorMessage, $this->url)); } } @@ -173,10 +180,18 @@ class StreamLogger extends AbstractFriendicaLogger } if (isset($dirname) && !is_dir($dirname)) { + set_error_handler([$this, 'customErrorHandler']); $status = mkdir($dirname, 0777, true); + restore_error_handler(); + if (!$status && !is_dir($dirname)) { - throw new \UnexpectedValueException(sprintf('Directory "%s" cannot get created.', $dirname)); + throw new \UnexpectedValueException(sprintf('Directory "%s" cannot get created: ' . $this->errorMessage, $dirname)); } } } + + private function customErrorHandler($code, $msg) + { + $this->errorMessage = preg_replace('{^(fopen|mkdir)\(.*?\): }', '', $msg); + } }