El proveedor MonologServiceProvider
proporciona un sistema de logs mediante la integración de la librería Monolog creada por el programador Jordi Boggiano.
Cuando se registra este proveedor, la aplicación guarda información de log sobre las peticiones y sobre los errores producidos. Como también permite loggear cualquier tipo de información propia, puedes emplearlo para depurar y monitorizar tu aplicación, incluso cuando se ejecuta en producción.
A.5.1. Parámetros de configuración
El proveedor define los siguientes parámetros configurables:
monolog.logfile
: ruta del archivo en el que se guardan los mensajes.monolog.bubble
: (opcional) indica si los mensajes se escalan hacia arriba en la traza del error o no.monolog.level
(opcional): nivel que tienen que tener los mensajes para guardarse en el archivo. Los valores posibles sonLogger::DEBUG
,Logger::INFO
,Logger::WARNING
yLogger::ERROR
(además de las constantes PHP, también puedes usar las cadenasDEBUG
,INFO
,WARNING
yERROR
). El valor por defecto esDEBUG
y los niveles son graduales, lo que significa queDEBUG
guarda todos los mensajes,INFO
guarda todo salvo los mensajesDEBUG
, etc.monolog.name
(opcional): el nombre del canal monolog, que por defecto esmyapp
.
A.5.2. Servicios proporcionados
El proveedor proporciona los siguientes servicios:
monolog
: una instancia del logger de Monolog. Ejemplo de uso:
$app['monolog']->addDebug('Probando el logger de Monolog.');
monolog.listener
: un event listener que loguea peticiones, respuestas y errores.
A.5.3. Cómo se registra el proveedor
El siguiente código muestra un ejemplo de cómo registrar este proveedor:
$app->register(new Silex\Provider\MonologServiceProvider(), array(
'monolog.logfile' => __DIR__.'/development.log',
));
Nota La librería Monolog se incluye cuando descargas Silex en forma de archivo comprimido. Si instalas Silex mediante Composer, debes añadir esta dependencia ejecutando el siguiente comando:
$ composer require monolog/monolog
A.5.4. Ejemplos de uso
El proveedor MonologServiceProvider
proporciona el servicio monolog
para guardar mensajes de log de diferentes niveles mediante los métodos addDebug()
, addInfo()
, addWarning()
y addError()
:
use Symfony\Component\HttpFoundation\Response;
$app->post('/user', function () use ($app) {
// ...
$app['monolog']->addInfo(sprintf("Se ha registrado el usuario '%s'.", $username));
return new Response('', 201);
});
A.5.5. Configuración personalizada
Para añadir o modificar los handlers de Monolog, debes configurar el servicio antes de utilizarlo. Para ello, extiende el servicio monolog
:
$app['monolog'] = $app->share($app->extend('monolog', function($monolog, $app) {
$monolog->pushHandler(...);
return $monolog;
}));
A.5.6. Traits
El trait Silex\Application\MonologTrait
definido por este proveedor añade los siguientes atajos:
log
: guarda un mensaje en el archivo de logs.
$app->log(sprintf("Se ha registrado el usuario '%s'.", $username));
Para conocer todas las posibilidades de este proveedor, consulta la documentación oficial de Monolog.