Completed
Push — 15.x ( b45baa...4ca9b4 )
by Tim
02:13
created

LoggerFactory::getContainer()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 2

Importance

Changes 0
Metric Value
dl 0
loc 4
ccs 0
cts 4
cp 0
rs 10
c 0
b 0
f 0
cc 1
nc 1
nop 0
crap 2
1
<?php
2
3
/**
4
 * TechDivision\Import\Loggers\LoggerFactory
5
 *
6
 * NOTICE OF LICENSE
7
 *
8
 * This source file is subject to the Open Software License (OSL 3.0)
9
 * that is available through the world-wide-web at this URL:
10
 * http://opensource.org/licenses/osl-3.0.php
11
 *
12
 * PHP version 5
13
 *
14
 * @author    Tim Wagner <[email protected]>
15
 * @copyright 2016 TechDivision GmbH <[email protected]>
16
 * @license   http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
17
 * @link      https://github.com/techdivision/import
18
 * @link      http://www.techdivision.com
19
 */
20
21
namespace TechDivision\Import\Loggers;
22
23
use Monolog\Logger;
24
use Monolog\Handler\ErrorLogHandler;
25
use Doctrine\Common\Collections\ArrayCollection;
26
use Symfony\Component\DependencyInjection\ContainerInterface;
27
use TechDivision\Import\Utils\LoggerKeys;
28
use TechDivision\Import\ConfigurationInterface;
29
30
/**
31
 * The logger factory implementation.
32
 *
33
 * @author    Tim Wagner <[email protected]>
34
 * @copyright 2016 TechDivision GmbH <[email protected]>
35
 * @license   http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
36
 * @link      https://github.com/techdivision/import
37
 * @link      http://www.techdivision.com
38
 */
39
class LoggerFactory implements LoggerFactoryInterface
40
{
41
42
    /**
43
     * The DI container instance.
44
     *
45
     * @var \Symfony\Component\DependencyInjection\ContainerInterface
46
     */
47
    protected $container;
48
49
    /**
50
     * The actual configuration instance.
51
     *
52
     * @var \TechDivision\Import\ConfigurationInterface
53
     */
54
    protected $configuration;
55
56
    /**
57
     * Initialize the factory with the the DI container instance and the actual configuration instance.
58
     *
59
     * @param \Symfony\Component\DependencyInjection\ContainerInterface $container     The DI container instance
60
     * @param \TechDivision\Import\ConfigurationInterface               $configuration The configuration with the data to create the loggers with
61
     */
62
    public function __construct(ContainerInterface $container, ConfigurationInterface $configuration)
63
    {
64
        $this->container = $container;
65
        $this->configuration = $configuration;
66
    }
67
68
    /**
69
     * Returns the actual configuration instance.
70
     *
71
     * @return \TechDivision\Import\ConfigurationInterface The configuration instance
72
     */
73
    protected function getConfiguration()
74
    {
75
        return $this->configuration;
76
    }
77
78
    /**
79
     * Returns the DI container instance.
80
     *
81
     * @return \Symfony\Component\DependencyInjection\ContainerInterface The DI container instance
82
     */
83
    protected function getContainer()
84
    {
85
        return $this->container;
86
    }
87
88
    /**
89
     * Create's and return's the loggers to use.
90
     *
91
     * @return \Doctrine\Common\Collections\ArrayCollection The array with the initialized loggers
92
     */
93
    public function createLoggers()
94
    {
95
96
        // load the configuration instance
97
        $configuration = $this->getConfiguration();
98
99
        // initialize the collection for the loggers
100
        $loggers = new ArrayCollection();
101
102
        // initialize the default system logger
103
        $systemLogger = new Logger('techdivision/import');
104
        $systemLogger->pushHandler(
105
            new ErrorLogHandler(
106
                ErrorLogHandler::OPERATING_SYSTEM,
107
                $configuration->getLogLevel()
108
            )
109
        );
110
111
        // add it to the array
112
        $loggers->set(LoggerKeys::SYSTEM, $systemLogger);
113
114
        // append the configured loggers or override the default one
115
        foreach ($configuration->getLoggers() as $name => $loggerConfiguration) {
0 ignored issues
show
Bug introduced by
The method getLoggers() does not seem to exist on object<TechDivision\Impo...ConfigurationInterface>.

This check looks for calls to methods that do not seem to exist on a given type. It looks for the method on the type itself as well as in inherited classes or implemented interfaces.

This is most likely a typographical error or the method has been renamed.

Loading history...
116
            // load the factory class that creates the logger instance
117
            $loggerFactory = $this->getContainer()->get($loggerConfiguration->getId());
118
            // create the logger instance and add it to the available loggers
119
            $loggers->set($name, $loggerFactory->factory($configuration, $loggerConfiguration));
120
        }
121
122
        // return the collection with the initialized loggers
123
        return $loggers;
124
    }
125
}
126