Skip to content
Extraits de code Groupes Projets
Valider 7a9f7083 rédigé par Matthieu Napoli's avatar Matthieu Napoli
Parcourir les fichiers

#6622 Logger refactoring: moved all the log config to DI config

parent a59667bf
Branches
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
...@@ -3,6 +3,7 @@ ...@@ -3,6 +3,7 @@
use Interop\Container\ContainerInterface; use Interop\Container\ContainerInterface;
use Piwik\Common; use Piwik\Common;
use Piwik\Log; use Piwik\Log;
use Piwik\Log\Backend\StdErrBackend;
use Piwik\Log\Formatter\AddRequestIdFormatter; use Piwik\Log\Formatter\AddRequestIdFormatter;
use Piwik\Log\Formatter\ErrorHtmlFormatter; use Piwik\Log\Formatter\ErrorHtmlFormatter;
use Piwik\Log\Formatter\ErrorTextFormatter; use Piwik\Log\Formatter\ErrorTextFormatter;
...@@ -30,7 +31,8 @@ return array( ...@@ -30,7 +31,8 @@ return array(
}), }),
// Log // Log
'Piwik\Log' => DI\factory(array('Piwik\Log\LoggerFactory', 'createLogger')), 'Piwik\Log' => DI\object()
->constructor(DI\link('log.handlers'), DI\link('log.level.piwik'), DI\link('log.processors')),
'log.level.monolog' => DI\factory(function (ContainerInterface $c) { 'log.level.monolog' => DI\factory(function (ContainerInterface $c) {
return Log::getMonologLevel($c->get('log.level.piwik')); return Log::getMonologLevel($c->get('log.level.piwik'));
}), }),
...@@ -57,6 +59,35 @@ return array( ...@@ -57,6 +59,35 @@ return array(
} }
return false; return false;
}), }),
'log.handlers' => DI\factory(function (ContainerInterface $c) {
if ($c->has('old_config.log.log_writers')) {
$writerNames = $c->get('old_config.log.log_writers');
}
if (empty($writerNames)) {
return array();
}
$classes = array(
'file' => 'Piwik\Log\Backend\FileBackend',
'screen' => 'Piwik\Log\Backend\StdOutBackend',
'database' => 'Piwik\Log\Backend\DatabaseBackend',
);
$writerNames = array_map('trim', $writerNames);
$writers = array();
foreach ($writerNames as $writerName) {
if (isset($classes[$writerName])) {
$class = $classes[$writerName];
$writers[$writerName] = $c->get($class);
}
}
// Always add the stderr backend
$isLoggingToStdOut = isset($writers['screen']);
$writers['stderr'] = new StdErrBackend($c->get('log.formatter.html'), $isLoggingToStdOut);
return $writers;
}),
'log.processors' => array( 'log.processors' => array(
DI\link('Piwik\Log\Processor\ClassNameProcessor'), DI\link('Piwik\Log\Processor\ClassNameProcessor'),
DI\link('Piwik\Log\Processor\SprintfProcessor'), DI\link('Piwik\Log\Processor\SprintfProcessor'),
......
<?php
/**
* Piwik - free/libre analytics platform
*
* @link http://piwik.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
*/
namespace Piwik\Log;
use Interop\Container\ContainerInterface;
use Piwik\Config;
use Piwik\Log;
use Piwik\Log\Backend\StdErrBackend;
class LoggerFactory
{
/**
* @param ContainerInterface $container
* @return Log
*/
public static function createLogger(ContainerInterface $container)
{
$logConfig = Config::getInstance()->log;
$logLevel = $container->get('log.level.piwik');
$writers = self::getLogWriters($logConfig, $container);
$processors = $container->get('log.processors');
return new Log($writers, $logLevel, $processors);
}
private static function getLogWriters($logConfig, ContainerInterface $container)
{
$writerNames = @$logConfig[Log::LOG_WRITERS_CONFIG_OPTION];
if (empty($writerNames)) {
return array();
}
$classes = array(
'file' => 'Piwik\Log\Backend\FileBackend',
'screen' => 'Piwik\Log\Backend\StdOutBackend',
'database' => 'Piwik\Log\Backend\DatabaseBackend',
);
$writerNames = array_map('trim', $writerNames);
$writers = array();
foreach ($writerNames as $writerName) {
if (isset($classes[$writerName])) {
$class = $classes[$writerName];
$writers[$writerName] = $container->get($class);
}
}
// Always add the stderr backend
$isLoggingToStdOut = isset($writers['screen']);
$writers['stderr'] = new StdErrBackend($container->get('log.formatter.html'), $isLoggingToStdOut);
return $writers;
}
}
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Veuillez vous inscrire ou vous pour commenter