, (*1)
Logger bridge for Contao Open Source CMS
This bridge provide PSR-3 logger support for Contao Open Source CMS.
The logger is available via the dependency injection container., (*2)
By default the logger use two handlers.
* An contao syslog handler, that write log entries to the system log database.
* And an stream handler, that write log entries to system/logs/contao.log
., (*3)
By default it use Monolog as implementation, but it is designed to be replaceable with any PSR-3 compatible logger implementation., (*4)
Access and use the logger
global $container;
/** @var \Psr\Log\LoggerInterface */
$logger = $container['logger'];
$logger->emergency('Some extreme critical message');
Logger configuration
Receive and change the default log level
global $container;
// receive default log level
$level = $container['logger.default.level'];
// change default log level
$container['logger.default.level'] = \Psr\Log\LogLevel::WARNING;
Define default log handlers
The default log handlers are stored in $container['logger.default.handlers']
containing a list of handler services., (*5)
global $container;
// receive the default log handlers array (its an ArrayObject instance)
$handlers = $container['logger.default.handlers'];
// remove the contao syslog handler
foreach ($handlers as $index => $serviceKey) {
if ($serviceKey == 'logger.handler.contao') {
unset($handlers[$index]);
break;
}
}
// add a custom handler
$container['logger.handler.custom'] = function($container) {
$factory = $container['logger.factory.handler.stream'];
// store in /var/log/critical.log
return $factory('/var/log/critical.log', \Psr\Log\LogLevel::CRITICAL);
}
$handlers->append('logger.handler.custom');
Create your own logger
global $container;
// register a handler
$container['logger.handler.custom'] = function($container) {
$factory = $container['logger.factory.handler.stream'];
// store in system/logs/critical.log
return $factory('critical.log', \Monolog\Logger::CRITICAL);
}
// register your logger
$container['logger.custom'] = function($container) {
// using the logger factory
$factory = $container['logger.factory'];
$logger = $factory('contao', array('logger.handler.custom'));
return $logger;
};
// receive your logger
$logger = $container['logger.custom'];
Reference
Services
$container['logger.default.level']
(int
) the default log level, default: Psr\Log\LogLevel::INFO
, (*6)
$container['logger.default.level.contao']
(int
) the default log level, inherited from $container['logger.default.level']
, (*7)
$container['logger.default.level.buffer']
(int
) the default log level, inherited from $container['logger.default.level']
, (*8)
$container['logger.default.level.chromePhp']
(int
) the default log level, inherited from $container['logger.default.level']
, (*9)
$container['logger.default.level.firePhp']
(int
) the default log level, inherited from $container['logger.default.level']
, (*10)
$container['logger.default.level.rotatingFile']
(int
) the default log level, inherited from $container['logger.default.level']
, (*11)
$container['logger.default.level.mail']
(int
) the default log level, default: Psr\Log\LogLevel::ERROR
, (*12)
$container['logger.default.level.stream']
(int
) the default log level, inherited from $container['logger.default.level']
, (*13)
$container['logger.default.rotation']
(int
) number of days for log rotation, default: 28, (*14)
$container['logger.handler.contao']
(Monolog\Handler\HandlerInterface|Logger\ContaoHandler
) default contao syslog handler, (*15)
$container['logger.handler.stream']
(Monolog\Handler\HandlerInterface|Monolog\Handler\RotatingFileHandler
) default rotating logfile (system/logs/contao-Y-m-d.log) handler, (*16)
$container['logger.default.handlers']
(ArrayObject
) list of default log handlers, (*17)
$container['logger']
(Psr\Log\LoggerInterface|Monolog\Logger
) the default logger, (*18)
Factories
$container['logger.factory.handler.contao']
/**
* @param int $level The minimum logging level at which this handler will be triggered
* @param bool $bubble Whether the messages that are handled can bubble up the stack or not
* @param string $function The function name in the contao syslog (use channel name by default)
* @param string $action The action name in the contao syslog (use simplified log level name by default)
*/
function($level = null, $bubble = true, $function = null, $action = null)
$container['logger.factory.handler.buffer']
/**
* @param string|callable|Monolog\Handler\HandlerInterface $handler Service name, callable or handler object.
* @param int $bufferSize How many entries should be buffered at most, beyond that the oldest items are removed from the buffer.
* @param int $level The minimum logging level at which this handler will be triggered
* @param bool $bubble Whether the messages that are handled can bubble up the stack or not
* @param bool $flushOnOverflow If true, the buffer is flushed when the max size has been reached, by default oldest entries are discarded
*/
function function($handler, $bufferSize = 0, $level = null, $bubble = true, $flushOnOverflow = false)
$container['logger.factory.handler.chromePhp']
/**
* @param int $level The minimum logging level at which this handler will be triggered
* @param bool $bubble Whether the messages that are handled can bubble up the stack or not
*/
function function($level = null, $bubble = true)
$container['logger.factory.handler.fingersCrossed']
/**
* @param string|callable|Monolog\Handler\HandlerInterface $handler Service name, callable or handler object.
* @param int|ActivationStrategyInterface $activationStrategy The minimum logging level at which this handler will be triggered
* @param int $bufferSize How many entries should be buffered at most, beyond that the oldest items are removed from the buffer.
* @param bool $bubble Whether the messages that are handled can bubble up the stack or not
* @param bool $stopBuffering Whether the handler should stop buffering after being triggered (default true)
*/
function function($handler, $activationStrategy = null, $bufferSize = 0, $bubble = true, $stopBuffering = true)
$container['logger.factory.handler.firePhp']
/**
* @param int $level The minimum logging level at which this handler will be triggered
* @param bool $bubble Whether the messages that are handled can bubble up the stack or not
*/
function function($level = null, $bubble = true)
$container['logger.factory.handler.group']
/**
* @param array $handlers List of services, callbacks or handlers.
* @param bool $bubble Whether the messages that are handled can bubble up the stack or not
*/
function function(array $handlers, $bubble = true)
$container['logger.factory.handler.rotatingFile']
/**
* @param string $filename Absolute filename or single name (stored in system/logs/)
* @param int $maxFiles The maximal amount of files to keep (0 means unlimited)
* @param int $level The minimum logging level at which this handler will be triggered
* @param bool $bubble Whether the messages that are handled can bubble up the stack or not
*/
function function($filename, $maxFiles = null, $level = null, $bubble = true)
$container['logger.factory.handler.mail']
/**
* A handler using swift to send entries as emails.
*
* @param string $to The email recipient address
* @param string $subject The email subject
* @param string $from The email sender address
* @param int $level The minimum logging level at which this handler will be triggered
* @param bool $bubble Whether the messages that are handled can bubble up the stack or not
*/
function function($to = null, $subject = null, $from = null, $level = null, $bubble = true)
$container['logger.factory.handler.stream']
/**
* @param string $uri Stream uri
* @param int $level The minimum logging level at which this handler will be triggered
* @param bool $bubble Whether the messages that are handled can bubble up the stack or not
*/
function function($uri, $level = null, $bubble = true)
$container['logger.factory']
/**
* @param string $name The channel name
* @param array $handlers List of services or handlers.
*/
function function($name, array $handlers = array())