]> git.mxchange.org Git - friendica.git/blobdiff - src/Util/LoggerFactory.php
Display mentioned users and in the comment box by default
[friendica.git] / src / Util / LoggerFactory.php
index ac6f6c92df6d9a3a4846cd5548aa3a041b9be73b..88b6fe8c819bf978b3fd5be5772634f47894b515 100644 (file)
@@ -4,6 +4,7 @@ namespace Friendica\Util;
 
 use Friendica\Network\HTTPException\InternalServerErrorException;
 use Friendica\Util\Logger\FriendicaDevelopHandler;
+use Friendica\Util\Logger\FriendicaProcessor;
 use Monolog;
 use Psr\Log\LoggerInterface;
 use Psr\Log\LogLevel;
@@ -26,6 +27,8 @@ class LoggerFactory
        {
                $logger = new Monolog\Logger($channel);
                $logger->pushProcessor(new Monolog\Processor\PsrLogMessageProcessor());
+               $logger->pushProcessor(new Monolog\Processor\ProcessIdProcessor());
+               $logger->pushProcessor(new FriendicaProcessor(LogLevel::DEBUG, 1));
 
                return $logger;
        }
@@ -47,6 +50,9 @@ class LoggerFactory
        {
                $logger = new Monolog\Logger($channel);
                $logger->pushProcessor(new Monolog\Processor\PsrLogMessageProcessor());
+               $logger->pushProcessor(new Monolog\Processor\ProcessIdProcessor());
+               $logger->pushProcessor(new FriendicaProcessor(LogLevel::DEBUG, 1));
+
 
                $logger->pushHandler(new FriendicaDevelopHandler($developerIp));
 
@@ -68,12 +74,46 @@ class LoggerFactory
        public static function addStreamHandler($logger, $stream, $level = LogLevel::NOTICE)
        {
                if ($logger instanceof Monolog\Logger) {
-                       $fileHandler = new Monolog\Handler\StreamHandler($stream . ".1", Monolog\Logger::toMonologLevel($level));
+                       $loglevel = Monolog\Logger::toMonologLevel($level);
+
+                       // fallback to notice if an invalid loglevel is set
+                       if (!is_int($loglevel)) {
+                               $loglevel = LogLevel::NOTICE;
+                       }
+                       $fileHandler = new Monolog\Handler\StreamHandler($stream, $loglevel);
+
+                       $formatter = new Monolog\Formatter\LineFormatter("%datetime% %channel% [%level_name%]: %message% %context% %extra%\n");
+                       $fileHandler->setFormatter($formatter);
+
+                       $logger->pushHandler($fileHandler);
+               } else {
+                       throw new InternalServerErrorException('Logger instance incompatible for MonologFactory');
+               }
+       }
+
+       /**
+        * This method enables the test mode of a given logger
+        *
+        * @param LoggerInterface $logger The logger
+        *
+        * @return Monolog\Handler\TestHandler the Handling for tests
+        *
+        * @throws InternalServerErrorException if the logger is incompatible to the logger factory
+        */
+       public static function enableTest($logger)
+       {
+               if ($logger instanceof Monolog\Logger) {
+                       // disable every handler so far
+                       $logger->pushHandler(new Monolog\Handler\NullHandler());
 
-                       $formatter = new Monolog\Formatter\LineFormatter("%channel% [%level_name%]: %message% %context% %extra%");
+                       // enable the test handler
+                       $fileHandler = new Monolog\Handler\TestHandler();
+                       $formatter = new Monolog\Formatter\LineFormatter("%datetime% %channel% [%level_name%]: %message% %context% %extra%\n");
                        $fileHandler->setFormatter($formatter);
 
                        $logger->pushHandler($fileHandler);
+
+                       return $fileHandler;
                } else {
                        throw new InternalServerErrorException('Logger instance incompatible for MonologFactory');
                }