/** * Appends the processors to the given logger as configured. * * @param \TYPO3\CMS\Core\Log\Logger $logger Logger to configure * @return void * @throws \RangeException */ protected function setProcessorsForLogger(\TYPO3\CMS\Core\Log\Logger $logger) { $configuration = $this->getConfigurationForLogger(self::CONFIGURATION_TYPE_PROCESSOR, $logger->getName()); foreach ($configuration as $severityLevel => $processor) { foreach ($processor as $logProcessorClassName => $logProcessorOptions) { /** @var $logProcessor \TYPO3\CMS\Core\Log\Processor\ProcessorInterface */ $logProcessor = NULL; try { $logProcessor = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance($logProcessorClassName, $logProcessorOptions); $logger->addProcessor($severityLevel, $logProcessor); } catch (\RangeException $e) { $logger->warning('Instantiation of LogProcessor "' . $logProcessorClassName . '" failed for logger ' . $logger->getName() . ' (' . $e->getMessage() . ')'); } } } }
/** * @test */ public function loggerCallsProcessor() { $component = 'test.core.log'; $level = LogLevel::DEBUG; $message = 'test'; $logger = new Logger($component); /** @var $processor \TYPO3\CMS\Core\Log\Processor\ProcessorInterface|\PHPUnit_Framework_MockObject_MockObject */ $processor = $this->getMock(NullProcessor::class, array('processLogRecord')); $processor->expects($this->once())->method('processLogRecord')->will($this->returnValue(new LogRecord($component, $level, $message))); $logger->addProcessor($level, $processor); // we need a writer, otherwise we will not process log records $logger->addWriter($level, new NullWriter()); $logger->warning($message); }