Configuration of the logging system
The instantiation of loggers is configuration-free, as the log manager automatically applies its configuration.
The logger configuration is read from $GLOBALS
,
which contains an array reflecting the namespace and class hierarchy of your
TYPO3 project.
For example, to apply a configuration for all loggers within the
\TYPO3\
namespace, the configuration is read from
$GLOBALS
.
So every logger requested for classes like \TYPO3\
,
\TYPO3\
, etc. will get this
configuration applied.
Configuring the logging for extensions works the same.
Writer configuration
The log writer configuration is read from the sub-key
writer
of the configuration array:
$GLOBALS['TYPO3_CONF_VARS']['LOG']['writerConfiguration'] = [
// Configuration for ERROR level log entries
\Psr\Log\LogLevel::ERROR => [
// Add a FileWriter
\TYPO3\CMS\Core\Log\Writer\FileWriter::class => [
// Configuration for the writer
'logFile' => \TYPO3\CMS\Core\Core\Environment::getVarPath() . '/log/typo3_7ac500bce5.log'
],
],
];
The above configuration applies to all log entries of level "ERROR" or above.
Note
The default folder for log files is <var-
.
The <var-
is <project-
for Composer-based
installations and typo3temp/
for legacy installations.
To apply a special configuration for the controllers of the examples extension, use the following configuration:
$GLOBALS['TYPO3_CONF_VARS']['LOG']['T3docs']['Examples']['Controller']['writerConfiguration'] = [
// Configuration for WARNING severity, including all
// levels with higher severity (ERROR, CRITICAL, EMERGENCY)
\Psr\Log\LogLevel::WARNING => [
// Add a SyslogWriter
\TYPO3\CMS\Core\Log\Writer\SyslogWriter::class => [],
],
];
This overwrites the default configuration shown in the first example for classes
located in the namespace \T3docs\
.
One more example:
// Configure logging ...
// For class \T3docs\Examples\Controller\FalExampleController
$GLOBALS['TYPO3_CONF_VARS']['LOG']
['T3docs']['Examples']['Controller']['FalExampleController']
['writerConfiguration'] = [
// ...
];
// For channel "security"
$GLOBALS['TYPO3_CONF_VARS']['LOG']['security']['writerConfiguration'] = [
// ...
];
For more information about channels, see Channels.
An arbitrary number of writers can be added for every severity level (INFO,
WARNING, ERROR, ...). The configuration is applied to log entries of the
particular severity level plus all levels with a higher severity. Thus, a log
message created with $logger->warning
will be affected by the
writer configuration for the log levels:
Log
Level:: DEBUG Log
Level:: INFO Log
Level:: NOTICE Log
Level:: WARNING
For the above example code that means:
- Calling
$logger->warning
will result in($msg); $msg
being written to the computer's syslog on top of the default configuration. - Calling
$logger->debug
will result in($msg); $msg
being written only to the default log file (var/
).log/ typo3_<hash>. log
For a list of writers shipped with the TYPO3 Core see the section about Log writers.
Processor configuration
Similar to the writer configuration, log record processors
can be configured on a per-class and per-namespace basis with the sub-key
processor
:
$GLOBALS['TYPO3_CONF_VARS']['LOG']['T3docs']['Examples']['Controller']['processorConfiguration'] = [
// Configuration for ERROR level log entries
\Psr\Log\LogLevel::ERROR => [
// Add a MemoryUsageProcessor
\TYPO3\CMS\Core\Log\Processor\MemoryUsageProcessor::class => [
'formatSize' => TRUE
],
],
];
For a list of processors shipped with the TYPO3 Core, see the section about Log processors.
Disable all logging
In some setups it is desirable to disable all logs and to only enable them on demand.
You can disable all logs by unsetting $GLOBALS
at the
end of your additional.php:
// disable all logging
unset($GLOBALS['TYPO3_CONF_VARS']['LOG']);
You can then temporarily enable logging by commenting out this line:
// unset($GLOBALS['TYPO3_CONF_VARS']['LOG']);
// By commenting out the line above you can enable logging again.