For coders TYPO3 Tech Corner

[PHP] Add own logging to your TYPO3

[PHP] Add own logging to your TYPO3

The following snippet goes into the ext_localconf.php of your extension that changes the writer configuration for all classes below in the controller namespace of the extension package to the FileWriter (in this example we want to log a file). A VendorPackageController.log file is then created below var/log:

$GLOBALS['TYPO3_CONF_VARS']['LOG']['Vendor']['Package']['Controller']['writerConfiguration'] = [ \TYPO3\CMS\Core\Log\LogLevel::INFO => [ \TYPO3\CMS\Core\Log\Writer\FileWriter::class => [ 'logFile' => \TYPO3\CMS\Core\Core\Environment::getVarPath() . '/log/VendorPackageController.log' ] ] ];

You can then create the whole thing so granularly that you can explicitly adapt the configuration for the MyFirstController controller:

$GLOBALS['TYPO3_CONF_VARS']['LOG']['Vendor']['Package']['Controller']['MyFirstController']['writerConfiguration'] = [...];

The LoggerAwareInterface is implemented in the controller itself and you can then log:

<?php declare(strict_types=1); namespace Vendor\Package\Controller; use Psr\Log\LoggerAwareInterface; use Psr\Log\LoggerAwareTrait; use TYPO3\CMS\Extbase\Mvc\Controller\ActionController; class MyFirstController extends ActionController implements LoggerAwareInterface { use LoggerAwareTrait; public function __construct() { $this->logger = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance(\TYPO3\CMS\Core\Log\LogManager::class)->getLogger(__CLASS__); } public function myControllerAction() { $this->logger->error('Hier wird was weggelogged!'); } }

Tip: In TYPO3 11 the whole thing is even more stylish and without an interface (see official documentation for TYPO3 11 and for TYPO3 10)

Back

"Code faster, look at the time" - does this sound familiar to you?

How about time and respect for code quality? Working in a team? Automated tests?

Join us