ConsoleLogTarget::outContext()   A
last analyzed

Complexity

Conditions 2
Paths 2

Size

Total Lines 7

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 7
rs 10
c 0
b 0
f 0
cc 2
nc 2
nop 2
1
<?php
2
3
namespace hiapi\console;
4
5
use hidev\components\Log;
6
use Psr\Log\LogLevel;
7
use yii\helpers\Console;
8
use yii\helpers\VarDumper;
9
use yii\log\Logger;
10
11
/**
12
 * Class ConsoleLogTarget
13
 *
14
 * @author Dmytro Naumenko <[email protected]>
15
 */
16
class ConsoleLogTarget extends \yii\log\Target
17
{
18
    public $exportInterval = 1;
19
20
    public $exportContext = [
21
        LogLevel::EMERGENCY => false,
22
        LogLevel::ERROR     => false,
23
        LogLevel::ALERT     => false,
24
        LogLevel::CRITICAL  => false,
25
        LogLevel::WARNING   => false,
26
    ];
27
28
    public $styles = [
29
        LogLevel::EMERGENCY => [Console::BOLD, Console::BG_RED],
30
        LogLevel::ERROR     => [Console::FG_RED, Console::BOLD],
31
        LogLevel::ALERT     => [Console::FG_RED],
32
        LogLevel::CRITICAL  => [Console::FG_RED],
33
        LogLevel::WARNING   => [Console::FG_YELLOW],
34
    ];
35
    
36
    private $convertYiiToPSR = [
37
        Logger::LEVEL_ERROR => LogLevel::ERROR,
38
        Logger::LEVEL_WARNING => LogLevel::WARNING,
39
        Logger::LEVEL_INFO => LogLevel::INFO,
40
        Logger::LEVEL_TRACE => LogLevel::DEBUG,
41
    ];
42
43
    public function export()
44
    {
45
        foreach ($this->messages as $message) {
46
            $level = $this->convertYiiToPSR[$message[1]] ?? $message[1];
47
            
48
            $out = $message[0];
49
            if (!is_scalar($out)) {
50
                $out = VarDumper::dump($message[0]);
51
            }
52
            
53
            $this->out($level, $out);
54
            $this->outContext($level, $message[2]);
55
        }
56
    }
57
58
    private function outContext($level, $context)
59
    {
60
        if ($this->exportContext[$level] ?? false) {
61
            $export = VarDumper::export($context);
62
            Console::stdout($export . "\n");
63
        }
64
    }
65
66
    public function out($level, $message)
67
    {
68
        $style = $this->styles[$level] ?? null;
69
        if ($style) {
70
            $message = Console::ansiFormat($message, $style);
71
        } else {
72
            return;
73
        }
74
        Console::stdout($message . "\n");
75
    }
76
77
    protected function getContextMessage()
78
    {
79
        return '';
80
    }
81
}
82