• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

contributte / monolog / 3673863728

pending completion
3673863728

push

github

Milan Felix Ć ulc
Composer: update dependencies

9 of 9 new or added lines in 1 file covered. (100.0%)

102 of 108 relevant lines covered (94.44%)

0.94 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

94.74
/src/LoggerHolder.php
1
<?php declare(strict_types = 1);
2

3
namespace Contributte\Monolog;
4

5
use Contributte\Monolog\Exception\Logic\InvalidStateException;
6
use Monolog\Logger;
7
use Nette\DI\Container;
8
use Psr\Log\LoggerInterface;
9

10
class LoggerHolder
11
{
12

13
        /** @var string|null */
14
        private static $loggerServiceName;
15

16
        /** @var Container|null */
17
        private static $container;
18

19
        /** @var static|null */
20
        private static $instSelf;
21

22
        /** @var Logger */
23
        private $instLogger;
24

25
        public static function setLogger(string $loggerServiceName, Container $container): void
1✔
26
        {
27
                self::$loggerServiceName = $loggerServiceName;
1✔
28
                self::$container = $container;
1✔
29
        }
1✔
30

31
        /**
32
         * @return static
33
         */
34
        public static function getInstance(): self
35
        {
36
                if (self::$instSelf === null) {
1✔
37
                        if (self::$loggerServiceName === null || self::$container === null) {
1✔
38
                                throw new InvalidStateException(sprintf('Call %s::setLogger to use %s::getInstance', self::class, self::class));
×
39
                        }
40

41
                        /** @var Logger $logger */
42
                        $logger = self::$container->getService(self::$loggerServiceName);
1✔
43
                        self::$instSelf = new static($logger);
1✔
44
                }
45

46
                return self::$instSelf;
1✔
47
        }
48

49
        final public function __construct(Logger $logger)
1✔
50
        {
51
                $this->instLogger = $logger;
1✔
52
        }
1✔
53

54
        public function getLogger(): LoggerInterface
55
        {
56
                $backtrace = debug_backtrace();
1✔
57
                // Get class which called this or file if class does not exist
58
                $calledBy = $backtrace[1]['class'] ?? $backtrace[0]['file'] ?? $backtrace[0]['function'];
1✔
59

60
                $logger = clone $this->instLogger;
1✔
61

62
                // Write in log which class used LoggerHolder
63
                $logger->pushProcessor(function (array $record) use ($calledBy): array {
1✔
64
                        $record['extra']['calledBy'] = $calledBy;
65

66
                        return $record;
67
                });
1✔
68

69
                return $logger;
1✔
70
        }
71

72
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc