diff options
author | diosmosis <diosmosis@users.noreply.github.com> | 2018-08-11 11:13:55 +0300 |
---|---|---|
committer | Matthieu Aubry <mattab@users.noreply.github.com> | 2018-08-11 11:13:55 +0300 |
commit | 2d7896c3df5540bc109e89782880c0780a6b7bc2 (patch) | |
tree | 75584e348745db16b22a4d74f99c9d7c259f0af0 /plugins/Monolog | |
parent | bc33259f6b6fc730826eceeb2a029eef63e97fc0 (diff) |
If warning/error log detected in console command exit w/ code = 1. (#13275)
Diffstat (limited to 'plugins/Monolog')
-rw-r--r-- | plugins/Monolog/Handler/FailureLogMessageDetector.php | 49 | ||||
-rw-r--r-- | plugins/Monolog/config/cli.php | 2 |
2 files changed, 51 insertions, 0 deletions
diff --git a/plugins/Monolog/Handler/FailureLogMessageDetector.php b/plugins/Monolog/Handler/FailureLogMessageDetector.php new file mode 100644 index 0000000000..ea37f4ba08 --- /dev/null +++ b/plugins/Monolog/Handler/FailureLogMessageDetector.php @@ -0,0 +1,49 @@ +<?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\Plugins\Monolog\Handler; + +use Monolog\Handler\AbstractHandler; +use Monolog\Logger; + +/** + * Handler used to detect whether a certain level of log has been emitted. + */ +class FailureLogMessageDetector extends AbstractHandler +{ + /** + * @var boolean + */ + private $hasEncounteredImportantLog = false; + + public function __construct($level = Logger::WARNING) + { + parent::__construct($level, $bubble = true); + } + + public function handle(array $record) + { + $this->hasEncounteredImportantLog = true; + } + + /** + * @return bool + */ + public function hasEncounteredImportantLog() + { + return $this->hasEncounteredImportantLog; + } + + /** + * for tests + */ + public function reset() + { + $this->hasEncounteredImportantLog = false; + } +}
\ No newline at end of file diff --git a/plugins/Monolog/config/cli.php b/plugins/Monolog/config/cli.php index 0b33f04c7b..146943120b 100644 --- a/plugins/Monolog/config/cli.php +++ b/plugins/Monolog/config/cli.php @@ -2,6 +2,7 @@ use Interop\Container\ContainerInterface; use Monolog\Logger; +use Piwik\Plugins\Monolog\Handler\FailureLogMessageDetector; use Symfony\Bridge\Monolog\Formatter\ConsoleFormatter; use Symfony\Bridge\Monolog\Handler\ConsoleHandler; use Symfony\Component\Console\Output\OutputInterface; @@ -10,6 +11,7 @@ return array( // Log 'log.handlers' => array( + DI\get(FailureLogMessageDetector::class), DI\get('Symfony\Bridge\Monolog\Handler\ConsoleHandler'), ), 'Symfony\Bridge\Monolog\Handler\ConsoleHandler' => function (ContainerInterface $c) { |