Completed
Push — master ( 32412c...4a6135 )
by Andrii
03:09
created

Logger::getSpamLevel()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 8
Code Lines 4

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 3
CRAP Score 2.2559

Importance

Changes 1
Bugs 0 Features 0
Metric Value
c 1
b 0
f 0
dl 0
loc 8
ccs 3
cts 5
cp 0.6
rs 9.4285
cc 2
eloc 4
nc 2
nop 0
crap 2.2559
1
<?php
2
3
/*
4
 * Task runner, code generator and build tool for easier continuos integration
5
 *
6
 * @link      https://github.com/hiqdev/hidev
7
 * @package   hidev
8
 * @license   BSD-3-Clause
9
 * @copyright Copyright (c) 2015-2016, HiQDev (http://hiqdev.com/)
10
 */
11
12
namespace hidev\base;
13
14
use yii\helpers\Console;
15
16
/**
17
 * XXX TODO REDO to:
18
 * ConsoleTarget sends selected log messages to the console stdout.
19
 *
20
 * ```php
21
 * 'components' => [
22
 *     'log' => [
23
 *          'targets' => [
24
 *              [
25
 *                  'class' => 'yii\log\ConsoleTarget',
26
 *                  'levels' => ['error', 'warning'],
27
 *              ],
28
 *          ],
29
 *     ],
30
 * ],
31
 * ```
32
 */
33
class Logger extends \yii\log\Logger
34
{
35
    public static $styles = [
36
        self::LEVEL_WARNING => [Console::FG_YELLOW],
37
        self::LEVEL_ERROR   => [Console::FG_RED],
38
    ];
39
40
    public static $levels = [
41
        'warning' => self::LEVEL_WARNING,
42
        'error'   => self::LEVEL_ERROR,
43
        'quiet'   => 0,
44
    ];
45
46
    /**
47
     * @var integer level to send log messages to stdout.
48
     */
49
    protected $_spamLevel;
50
51
    /**
52
     * Logs a message to console and then to yii\log\Logger.
53
     */
54 6
    public function log($message, $level, $category = 'application')
55
    {
56 6
        if ($level <= $this->getSpamLevel()) {
57
            $style = self::$styles[$level];
58
            if ($style) {
59
                $message = Console::ansiFormat($message, $style);
60
            }
61
            Console::stdout($message . "\n");
62
        }
63 6
        parent::log($message, $level, $category);
64 6
    }
65
66
    /**
67
     * Spam level getter. Default `warning` level.
68
     * @return integer
69
     */
70 6
    public function getSpamLevel()
71
    {
72 6
        if ($this->_spamLevel === null) {
73
            $this->setSpamLevel('warning');
74
        }
75
76 6
        return $this->_spamLevel;
77
    }
78
79
    /**
80
     * Spam level setter.
81
     * @param integer $value
82
     */
83 6
    public function setSpamLevel($value)
84
    {
85 6
        if (isset(static::$levels[$value])) {
86 6
            $value = static::$levels[$value];
87 6
        }
88 6
        $this->_spamLevel = $value;
89 6
    }
90
}
91