/** * {@inheritDoc} */ public function createService(ServiceLocatorInterface $serviceLocator) { // create new logger $logger = new Logger(); // get application config as array $config = $serviceLocator->get('config'); $config = $config['dherrorlogging']; // get priority $priority = Logger::WARN; if (isset($config['priority']) && is_int($config['priority'])) { $priority = $config['priority']; } $priorityFilter = new Filter\Priority($priority); // get writers from config if (!empty($config['log_writers']) && is_array($config['log_writers'])) { $logWriterManager = $serviceLocator->get('LogWriterManager'); foreach ($config['log_writers'] as $writerSpecs) { // skip if no name if (empty($writerSpecs['name']) || !is_string($writerSpecs['name'])) { continue; } // get options $options = array(); if (!empty($writerSpecs['options']) && is_array($writerSpecs['options'])) { $options = $writerSpecs['options']; } // check if it is one of the known writers that can be created via config or retrieved from service manager if ($logWriterManager->has($writerSpecs['name'])) { $writer = $logWriterManager->get($writerSpecs['name'], $options); // add priority filter $writer->addFilter($priorityFilter); // add writer to logger $logger->addWriter($writer); } } } // add processors which will add some extra helpful info (IP, URI, trace,..) to the final log. $processor = $serviceLocator->get('LogProcessorManager')->get('DhErrorLogging\\LoggerProcessor'); $logger->addProcessor($processor); // Logger needs at least one writer. Check if there are any, else add empty one. if ($logger->getWriters()->count() == 0) { // Support for PHP7 / Zend >= 2.4 if (class_exists('\\Zend\\Log\\Writer\\Noop')) { $logger->addWriter(new Writer\Noop()); } else { $logger->addWriter(new Writer\Null()); } } return $logger; }
/** * @param string $type * @throws \InvalidArgumentException * @return \Zend\Log\Logger */ public function getLogger($type) { static $serviceTr = array('\\' => '', '_' => ''), $mailServices = array('mail', 'zendlogwritermail'); $type = (string) $type; if (!isset($this->config[$type])) { throw new Exception\InvalidArgumentException(sprintf('Type "%s" not registered in config', $type)); } $logger = new Logger(); if ($this->serviceLocator instanceof ServiceManager) { $logger->getWriterPluginManager()->addPeeringServiceManager($this->serviceLocator); } if (isset($this->config[$type]['writers'])) { foreach ($this->config[$type]['writers'] as $name => $config) { $name = isset($config['name']) ? (string) $config['name'] : $name; $options = isset($config['options']) ? (array) $config['options'] : null; $priority = isset($config['priority']) ? (int) $config['priority'] : null; if ($this->serviceLocator !== null && in_array(strtr(strtolower($name), $serviceTr), $mailServices)) { $mailService = $this->serviceLocator->get('Zork\\Mail\\Service'); if (!isset($options['transport'])) { $options['transport'] = $mailService->getTransport(); } if (!isset($options['mail'])) { $options['mail'] = array(); } $options['mail'] = $mailService->createMessage($options['mail']); } $writer = $logger->writerPlugin($name, $options); if ($writer instanceof WriterInterface) { if (isset($config['filters'])) { foreach ($config['filters'] as $filterName => $filterConfig) { $filterName = isset($filterConfig['name']) ? (string) $filterConfig['name'] : $filterName; $filterOptions = isset($filterConfig['options']) ? (array) $filterConfig['options'] : null; $filter = $writer->filterPlugin($filterName, $filterOptions); $writer->addFilter($filter, $filterOptions); } } if (isset($config['formatter']['name'])) { $formatter = $writer->formatterPlugin($config['formatter']['name'], isset($config['formatter']['options']) ? $config['formatter']['options'] : array()); $writer->setFormatter($formatter); } } $logger->addWriter($writer, $priority, $options); } } if (isset($this->config[$type]['processors'])) { foreach ($this->config[$type]['processors'] as $name => $config) { $name = isset($config['name']) ? (string) $config['name'] : $name; $options = isset($config['options']) ? (array) $config['options'] : null; $priority = isset($config['priority']) ? (int) $config['priority'] : null; $logger->addProcessor($name, $priority, $options); } } return $logger; }