Completed
Push — 2.1 ( 4d9204...3e6f8b )
by
unknown
11:56
created

LogTarget::setLogger()   A

Complexity

Conditions 3
Paths 3

Size

Total Lines 11
Code Lines 7

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 7
CRAP Score 3.0175

Importance

Changes 0
Metric Value
dl 0
loc 11
ccs 7
cts 8
cp 0.875
rs 9.4285
c 0
b 0
f 0
cc 3
eloc 7
nc 3
nop 1
crap 3.0175
1
<?php
2
/**
3
 * @link http://www.yiiframework.com/
4
 * @copyright Copyright (c) 2008 Yii Software LLC
5
 * @license http://www.yiiframework.com/license/
6
 */
7
8
namespace yii\profile;
9
10
use Psr\Log\LoggerInterface;
11
use Psr\Log\LogLevel;
12
use Yii;
13
use yii\di\Instance;
14
15
/**
16
 * LogTarget saves profiling messages as a log messages.
17
 *
18
 * Application configuration example:
19
 *
20
 * ```php
21
 * return [
22
 *     'profiler' => [
23
 *         'targets' => [
24
 *             [
25
 *                 'class' => yii\profile\LogTarget::class,
26
 *             ],
27
 *         ],
28
 *         // ...
29
 *     ],
30
 *     // ...
31
 * ];
32
 * ```
33
 *
34
 * @property LoggerInterface $logger logger to be used for message export.
35
 *
36
 * @author Paul Klimov <[email protected]>
37
 * @since 2.1
38
 */
39
class LogTarget extends Target
40
{
41
    /**
42
     * @var string log level to be used for messages export.
43
     */
44
    public $logLevel = LogLevel::DEBUG;
45
46
    /**
47
     * @var LoggerInterface logger to be used for message export.
48
     */
49
    private $_logger;
50
51
52
    /**
53
     * @return LoggerInterface logger to be used for message saving.
54
     */
55 1
    public function getLogger()
56
    {
57 1
        if ($this->_logger === null) {
58 1
            $this->_logger = Yii::getLogger();
59
        }
60 1
        return $this->_logger;
61
    }
62
63
    /**
64
     * @param LoggerInterface|\Closure|array $logger logger instance or its DI compatible configuration.
65
     */
66 1
    public function setLogger($logger)
67
    {
68 1
        if ($logger === null) {
69 1
            $this->_logger = null;
70 1
            return;
71
        }
72 1
        if ($logger instanceof \Closure) {
73
            $logger = call_user_func($logger);
74
        }
75 1
        $this->_logger = Instance::ensure($logger, LoggerInterface::class);
76 1
    }
77
78
    /**
79
     * {@inheritdoc}
80
     */
81 1
    public function export(array $messages)
82
    {
83 1
        $logger = $this->getLogger();
84 1
        foreach ($messages as $message) {
85 1
            $message['time'] = $message['beginTime'];
86 1
            $logger->log($this->logLevel, $message['token'], $message);
87
        }
88
    }
89
}