use DOMDocument;
use DOMXPath;
use Exception;
+use Friendica\Core\Logger;
use Friendica\Database\DBA;
use Friendica\Network\HTTPException\InternalServerErrorException;
use Psr\Log\LoggerInterface;
return;
}
- LoggerFactory::addStreamHandler($logger, $logfile, $loglevel);
+ $level = self::mapPSR3Level($loglevel);
+ LoggerFactory::addStreamHandler($logger, $logfile, $level);
+
+ self::$logger = $logger;
$logfile = Config::get('system', 'dlogfile');
public static function error($message, $context = [])
{
if (!isset(self::$logger)) {
+ echo "not set!?\n";
return;
}
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);
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');
+ }
+ }
}
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';
*/
class ApiTest extends DatabaseTest
{
+ /**
+ * @var TestHandler Can handle log-outputs
+ */
+ protected $logOutput;
+
/**
* Create variables used by tests.
*/
parent::setUp();
$this->app = BaseObject::getApp();
+ $this->logOutput = LoggerFactory::enableTest($this->app->getLogger());
// User data that the test database is populated with
$this->selfUser = [
{
$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());
}