Completed
Pull Request — master (#218)
by Thomas
05:43
created

LoggerHelper::createDefaultLogger()   B

Complexity

Conditions 2
Paths 2

Size

Total Lines 33
Code Lines 19

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 18
CRAP Score 2

Importance

Changes 0
Metric Value
dl 0
loc 33
ccs 18
cts 18
cp 1
rs 8.8571
c 0
b 0
f 0
cc 2
eloc 19
nc 2
nop 1
crap 2
1
<?php
2
declare(strict_types = 1);
3
4
namespace BrowscapPHP\Helper;
5
6
use Monolog\ErrorHandler;
7
use Monolog\Formatter\LineFormatter;
8
use Monolog\Handler\ErrorLogHandler;
9
use Monolog\Handler\StreamHandler;
10
use Monolog\Logger;
11
use Monolog\Processor\MemoryPeakUsageProcessor;
12
use Monolog\Processor\MemoryUsageProcessor;
13
use Psr\Log\LoggerInterface;
14
15
/**
16
 * Class LoggerHelper
17
 */
18
final class LoggerHelper
19
{
20
    private function __construct()
21
    {
22
    }
23
24
    /**
25
     * creates a \Monolog\Logger instance
26
     *
27
     * @param bool $debug If true the debug logging mode will be enabled
28
     * @return LoggerInterface
29
     * @throws \Exception
30
     */
31 2
    public static function createDefaultLogger(bool $debug = false) : LoggerInterface
32
    {
33 2
        $logger = new Logger('browscap');
34
35 2
        if ($debug) {
36 1
            $stream = new StreamHandler('php://output', Logger::DEBUG);
37 1
            $stream->setFormatter(
38 1
                new LineFormatter('[%datetime%] %channel%.%level_name%: %message% %extra%' . "\n")
39
            );
40
41
            /** @var callable $memoryProcessor */
42 1
            $memoryProcessor = new MemoryUsageProcessor(true);
43 1
            $logger->pushProcessor($memoryProcessor);
44
45
            /** @var callable $peakMemoryProcessor */
46 1
            $peakMemoryProcessor = new MemoryPeakUsageProcessor(true);
47 1
            $logger->pushProcessor($peakMemoryProcessor);
48
        } else {
49 1
            $stream = new StreamHandler('php://output', Logger::INFO);
50 1
            $stream->setFormatter(new LineFormatter('[%datetime%] %message% %extra%' . "\n"));
51
52
            /** @var callable $peakMemoryProcessor */
53 1
            $peakMemoryProcessor = new MemoryPeakUsageProcessor(true);
54 1
            $logger->pushProcessor($peakMemoryProcessor);
55
        }
56
57 2
        $logger->pushHandler($stream);
58 2
        $logger->pushHandler(new ErrorLogHandler(ErrorLogHandler::OPERATING_SYSTEM, Logger::NOTICE));
59
60 2
        ErrorHandler::register($logger);
61
62 2
        return $logger;
63
    }
64
}
65