diff --git a/config/global.ini.php b/config/global.ini.php index 2bab7b130d71ad47004c0161932d85f37c0a1a7e..4a319c7e8953aa342c94ff891200a49edb77c984 100644 --- a/config/global.ini.php +++ b/config/global.ini.php @@ -65,7 +65,7 @@ log_writers[] = screen ; log level, everything logged w/ this level or one of greater severity ; will be logged. everything else will be ignored. possible values are: ; NONE, ERROR, WARN, INFO, DEBUG, VERBOSE -log_level = ERROR +log_level = WARN ; if set to 1, only requests done in CLI mode (eg. the ./console core:archive cron run) will be logged ; NOTE: log_only_when_debug_parameter will also be checked for diff --git a/config/global.php b/config/global.php index 5810779925976b3f001c4fa000a26c0088ac1a6a..b7051fdde7b04f6425405db335c3e472f847c2d3 100644 --- a/config/global.php +++ b/config/global.php @@ -34,6 +34,7 @@ return array( } $classes = array( 'file' => 'Piwik\Log\Handler\FileHandler', + 'screen' => 'Piwik\Log\Handler\WebNotificationHandler', 'database' => 'Piwik\Log\Handler\DatabaseHandler', ); $writerNames = array_map('trim', $writerNames); @@ -58,6 +59,9 @@ return array( 'Piwik\Log\Handler\DatabaseHandler' => DI\object() ->constructor(DI\link('log.level')) ->method('setFormatter', DI\link('Piwik\Log\Formatter\LineMessageFormatter')), + 'Piwik\Log\Handler\WebNotificationHandler' => DI\object() + ->constructor(DI\link('log.level')) + ->method('setFormatter', DI\link('Piwik\Log\Formatter\LineMessageFormatter')), 'log.level' => DI\factory(function (ContainerInterface $c) { if ($c->get('log.disabled')) { return Log::getMonologLevel(Log::NONE); diff --git a/core/Error.php b/core/Error.php index 0dd346244faec2ef28d4e17e48d881ea986fa59d..6b69e68848a3ebe58be3e1356192781570d0edd0 100644 --- a/core/Error.php +++ b/core/Error.php @@ -94,7 +94,7 @@ class Error case E_DEPRECATED: case E_USER_DEPRECATED: default: - Log::info(self::createLogMessage($errno, $errstr, $errfile, $errline)); + Log::warning(self::createLogMessage($errno, $errstr, $errfile, $errline)); break; } } diff --git a/core/Log/Handler/WebNotificationHandler.php b/core/Log/Handler/WebNotificationHandler.php new file mode 100644 index 0000000000000000000000000000000000000000..af9afbe68e3cd8963272a44397871753e131939c --- /dev/null +++ b/core/Log/Handler/WebNotificationHandler.php @@ -0,0 +1,45 @@ +<?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\Handler; + +use Monolog\Handler\AbstractProcessingHandler; +use Monolog\Logger; +use Piwik\Common; +use Piwik\Notification; +use Piwik\Notification\Manager; + +/** + * Writes log messages into HTML notification box. + */ +class WebNotificationHandler extends AbstractProcessingHandler +{ + protected function write(array $record) + { + switch ($record['level']) { + case Logger::EMERGENCY: + case Logger::ALERT: + case Logger::CRITICAL: + case Logger::ERROR: + $context = Notification::CONTEXT_ERROR; + break; + case Logger::WARNING: + $context = Notification::CONTEXT_WARNING; + break; + default: + $context = Notification::CONTEXT_INFO; + break; + } + + $message = htmlentities($record['formatted']); + + $notification = new Notification($message); + $notification->context = $context; + Manager::notify(Common::getRandomString(), $notification); + } +}