Breaking: #110221 - Class Logger declared final 

See forge#110221

Description 

The PHP class \TYPO3\CMS\Core\Log\Logger has been declared final and is now instantiated directly via new within \TYPO3\CMS\Core\Log\LogManager , instead of using GeneralUtility::makeInstance() .

The logger is a plain, per-channel object created and configured by the LogManager . Routing its creation through makeInstance() only served to allow overriding the class via XCLASS, which is not a supported extension point for the logging API.

Impact 

Extending or XCLASSing Logger is not possible anymore. Extension classes will raise a fatal PHP error, XCLASS configurations for this class are silently ignored.

Obtaining and using loggers via dependency injection, the #[Channel] attribute, LoggerAwareInterface or LogManager->getLogger() continues to work as before.

Affected installations 

TYPO3 installations with third-party extensions that extend or XCLASS the class Logger , which is very unlikely.

Migration 

To customize logging behavior, implement the PSR-3 \Psr\Log\LoggerInterface and provide the instances through a custom \TYPO3\CMS\Core\Log\LogManagerInterface implementation, or attach custom log writers ( \TYPO3\CMS\Core\Log\Writer\WriterInterface ) and processors ( \TYPO3\CMS\Core\Log\Processor\ProcessorInterface ) to the existing logger, which is the designated way to influence how log records are handled.