Browse Source

Bugfixing

pull/6482/head
Philipp Holzer 3 years ago
committed by Hypolite Petovan
parent
commit
6150c2fa9c
  1. 1
      src/App.php
  2. 6
      src/Core/Logger.php
  3. 30
      src/Util/LoggerFactory.php
  4. 8
      tests/include/ApiTest.php
  5. 1
      tests/src/BaseObjectTest.php

1
src/App.php

@ -8,6 +8,7 @@ use Detection\MobileDetect;
use DOMDocument;
use DOMXPath;
use Exception;
use Friendica\Core\Logger;
use Friendica\Database\DBA;
use Friendica\Network\HTTPException\InternalServerErrorException;
use Psr\Log\LoggerInterface;

6
src/Core/Logger.php

@ -89,7 +89,10 @@ class Logger extends BaseObject
return;
}
LoggerFactory::addStreamHandler($logger, $logfile, $loglevel);
$level = self::mapPSR3Level($loglevel);
LoggerFactory::addStreamHandler($logger, $logfile, $level);
self::$logger = $logger;
$logfile = Config::get('system', 'dlogfile');
@ -185,6 +188,7 @@ class Logger extends BaseObject
public static function error($message, $context = [])
{
if (!isset(self::$logger)) {
echo "not set!?\n";
return;
}

30
src/Util/LoggerFactory.php

@ -68,7 +68,7 @@ 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));
$fileHandler = new Monolog\Handler\StreamHandler($stream, Monolog\Logger::toMonologLevel($level));
$formatter = new Monolog\Formatter\LineFormatter("%datetime% %channel% [%level_name%]: %message% %context% %extra%\n");
$fileHandler->setFormatter($formatter);
@ -78,4 +78,32 @@ class LoggerFactory
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());
// 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');
}
}
}

8
tests/include/ApiTest.php

@ -11,6 +11,8 @@ use Friendica\Core\PConfig;
use Friendica\Core\Protocol;
use Friendica\Core\System;
use Friendica\Network\HTTPException;
use Friendica\Util\LoggerFactory;
use Monolog\Handler\TestHandler;
require_once __DIR__ . '/../../include/api.php';
@ -22,6 +24,11 @@ require_once __DIR__ . '/../../include/api.php';
*/
class ApiTest extends DatabaseTest
{
/**
* @var TestHandler Can handle log-outputs
*/
protected $logOutput;
/**
* Create variables used by tests.
*/
@ -30,6 +37,7 @@ class ApiTest extends DatabaseTest
parent::setUp();
$this->app = BaseObject::getApp();
$this->logOutput = LoggerFactory::enableTest($this->app->getLogger());
// User data that the test database is populated with
$this->selfUser = [

1
tests/src/BaseObjectTest.php

@ -41,6 +41,7 @@ class BaseObjectTest extends TestCase
{
$logger = $logger = LoggerFactory::create('test');
$app = new App(__DIR__ . '/../../', $logger);
LoggerFactory::enableTest($logger);
$this->assertNull($this->baseObject->setApp($app));
$this->assertEquals($app, $this->baseObject->getApp());
}

Loading…
Cancel
Save