Completed
Push — master ( 044d54...2e664e )
by Siad
20:13
created

MonologListener::buildStarted()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 3
CRAP Score 1

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
eloc 2
c 1
b 0
f 0
nc 1
nop 1
dl 0
loc 4
ccs 3
cts 3
cp 1
crap 1
rs 10
1
<?php
2
/**
3
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
4
 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
5
 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
6
 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
7
 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
8
 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
9
 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
10
 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
11
 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
12
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
13
 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
14
 *
15
 * This software consists of voluntary contributions made by many individuals
16
 * and is licensed under the LGPL. For more information please see
17
 * <http://phing.info>.
18
 */
19
20
use Monolog\Logger;
21
22
/**
23
 * Listener which sends events to Monolog.
24
 *
25
 * @author  Siad Ardroumli <[email protected]>
26
 * @package phing.listener
27
 */
28
class MonologListener implements BuildListener
29
{
30
    /**
31
     * log category we log into
32
     */
33
    public const LOG_PHING = 'phing';
34
35
    /**
36
     * @var Logger
37
     */
38
    private $log;
39
40
    /**
41
     * Construct the listener
42
     */
43 1
    public function __construct()
44
    {
45 1
        $this->log = new Logger(self::LOG_PHING);
46 1
    }
47
48
    /**
49
     * @see BuildListener#buildStarted
50
     * {@inheritDoc}.
51
     */
52 1
    public function buildStarted(BuildEvent $event)
53
    {
54 1
        $log = $this->log->withName(Project::class);
55 1
        $log->info('Build started.');
56 1
    }
57
58
    /**
59
     * @see BuildListener#buildFinished
60
     * {@inheritDoc}.
61
     */
62
    public function buildFinished(BuildEvent $event)
63
    {
64
        $log = $this->log->withName(Project::class);
65
        if ($event->getException() === null) {
66
            $log->info('Build finished.');
67
        } else {
68
            $log->error('Build finished with error. ' . $event->getException());
69
        }
70
    }
71
72
    /**
73
     * @see BuildListener#targetStarted
74
     * {@inheritDoc}.
75
     */
76
    public function targetStarted(BuildEvent $event)
77
    {
78
        $log = $this->log->withName(Target::class);
79
        $log->info("Target \"{$event->getTarget()->getName()}\" started.");
80
    }
81
82
    /**
83
     * @see BuildListener#targetFinished
84
     * {@inheritDoc}.
85
     */
86
    public function targetFinished(BuildEvent $event)
87
    {
88
        $targetName = $event->getTarget()->getName();
89
        $cat = $this->log->withName(Target::class);
90
        if ($event->getException() === null) {
91
            $cat->info("Target \"{$targetName}\" finished.");
92
        } else {
93
            $cat->error("Target \"{$targetName}\" finished with error. " . $event->getException());
94
        }
95
    }
96
97
    /**
98
     * @see BuildListener#taskStarted
99
     * {@inheritDoc}.
100
     */
101
    public function taskStarted(BuildEvent $event)
102
    {
103
        $task = $event->getTask();
104
        $log = $this->log->withName(get_class($task));
105
        $log->info("Task \"{$task->getTaskName()}\" started.");
106
    }
107
108
    /**
109
     * @see BuildListener#taskFinished
110
     * {@inheritDoc}.
111
     */
112
    public function taskFinished(BuildEvent $event)
113
    {
114
        $task = $event->getTask();
115
        $log = $this->log->withName(get_class($task));
116
        if ($event->getException() === null) {
117
            $log->info("Task \"{$task->getTaskName()}\" finished.");
118
        } else {
119
            $log->error("Task \"{$task->getTaskName()}\" finished with error. {$event->getException()}");
120
        }
121
    }
122
123
    /**
124
     * @see BuildListener#messageLogged
125
     * {@inheritDoc}.
126
     */
127
    public function messageLogged(BuildEvent $event)
128
    {
129
        $categoryObject = $event->getTask();
130
        if ($categoryObject === null) {
131
            $categoryObject = $event->getTarget();
132
            if ($categoryObject === null) {
133
                $categoryObject = $event->getProject();
134
            }
135
        }
136
137
        $log = $this->log->withName(get_class($categoryObject));
138
        switch ($event->getPriority()) {
139
            case Project::MSG_WARN:
140
                $log->warn($event->getMessage());
141
                break;
142
            case Project::MSG_INFO:
143
                $log->info($event->getMessage());
144
                break;
145
            case Project::MSG_VERBOSE:
146
            case Project::MSG_DEBUG:
147
                $log->debug($event->getMessage());
148
                break;
149
            default:
150
                $log->error($event->getMessage());
151
                break;
152
        }
153
    }
154
}
155