Completed
Pull Request — master (#8)
by Walter
58:22
created

DailyStream::getStream()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 8

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 8
rs 10
c 0
b 0
f 0
cc 2
nc 2
nop 2
1
<?php
2
/**
3
 * Polder Knowledge / log-module (https://polderknowledge.com)
4
 *
5
 * @link https://github.com/polderknowledge/log-module for the canonical source repository
6
 * @copyright Copyright (c) 2016-2017 Polder Knowledge (https://polderknowledge.com)
7
 * @license https://github.com/polderknowledge/log-module/blob/master/LICENSE.md MIT
8
 */
9
10
namespace PolderKnowledge\LogModule\Monolog\Handler\Factory;
11
12
use Monolog\Handler\StreamHandler;
13
use Monolog\Logger;
14
use WShafer\PSR11MonoLog\FactoryInterface;
15
16
final class DailyStream implements FactoryInterface
17
{
18
    public function __invoke(array $options)
19
    {
20
        $stream = $this->getStream(
21
            $options['stream'] ?? null,
22
            $options['dateFormat'] ?? 'Ymd'
23
        );
24
25
        $level = (int)($options['level'] ?? Logger::DEBUG);
26
        $bubble = (boolean)($options['bubble'] ?? true);
27
        $filePermission = (int)($options['filePermission'] ?? 0644);
28
        $useLocking = (boolean)($options['useLocking'] ?? true);
29
30
        return new StreamHandler($stream, $level, $bubble, $filePermission, $useLocking);
31
    }
32
33
    protected function getStream($stream, $dateFormat)
34
    {
35
        if (is_resource($stream)) {
36
            return $stream;
37
        }
38
39
        return sprintf((string)$stream, date($dateFormat));
40
    }
41
}
42