summaryrefslogtreecommitdiffstats
path: root/library/Icinga/Application/Logger/Writer/StderrWriter.php
blob: 7df4278e9f327a78a89a45bf73e34f12d2773b9f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
<?php
/* Icinga Web 2 | (c) 2014 Icinga Development Team | GPLv2+ */

namespace Icinga\Application\Logger\Writer;

use Icinga\Cli\Screen;
use Icinga\Application\Logger;
use Icinga\Application\Logger\LogWriter;

/**
 * Class to write log messages to STDERR
 */
class StderrWriter extends LogWriter
{
    /**
     * The current Screen in use
     *
     * @var Screen
     */
    protected $screen;

    /**
     * Return the current Screen
     *
     * @return  Screen
     */
    protected function screen()
    {
        if ($this->screen === null) {
            $this->screen = Screen::instance(STDERR);
        }

        return $this->screen;
    }

    /**
     * Log a message with the given severity
     *
     * @param   int     $severity   The severity to use
     * @param   string  $message    The message to log
     */
    public function log($severity, $message)
    {
        $color = null;
        switch ($severity) {
            case Logger::ERROR:
                $color = 'red';
                break;
            case Logger::WARNING:
                $color = 'yellow';
                break;
            case Logger::INFO:
                $color = 'green';
                break;
            case Logger::DEBUG:
                $color = 'blue';
                break;
        }

        file_put_contents('php://stderr', $this->screen()->colorize($message, $color) . "\n");
    }
}