Файл: onlinepoisk.wm-scripts.ru/vendor/silex/silex/silex/src/Silex/Provider/MonologServiceProvider.php
Строк: 126
<?php
/*
* This file is part of the Silex framework.
*
* (c) Fabien Potencier <fabien@symfony.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace SilexProvider;
use MonologLogger;
use MonologHandlerStreamHandler;
use SilexApplication;
use SilexServiceProviderInterface;
use SymfonyComponentHttpFoundationRequest;
use SymfonyComponentHttpFoundationResponse;
use SymfonyBridgeMonologHandlerDebugHandler;
use SymfonyComponentHttpKernelExceptionHttpExceptionInterface;
/**
* Monolog Provider.
*
* @author Fabien Potencier <fabien@symfony.com>
*/
class MonologServiceProvider implements ServiceProviderInterface
{
public function register(Application $app)
{
if ($bridge = class_exists('SymfonyBridgeMonologLogger')) {
$app['logger'] = function () use ($app) {
return $app['monolog'];
};
$app['monolog.handler.debug'] = function () use ($app) {
return new DebugHandler($app['monolog.level']);
};
}
$app['monolog.logger.class'] = $bridge ? 'SymfonyBridgeMonologLogger' : 'MonologLogger';
$app['monolog'] = $app->share(function ($app) {
$log = new $app['monolog.logger.class']($app['monolog.name']);
$log->pushHandler($app['monolog.handler']);
if ($app['debug'] && isset($app['monolog.handler.debug'])) {
$log->pushHandler($app['monolog.handler.debug']);
}
return $log;
});
$app['monolog.handler'] = function () use ($app) {
return new StreamHandler($app['monolog.logfile'], $app['monolog.level']);
};
$app['monolog.level'] = function () {
return Logger::DEBUG;
};
$app['monolog.name'] = 'myapp';
}
public function boot(Application $app)
{
$app->before(function (Request $request) use ($app) {
$app['monolog']->addInfo('> '.$request->getMethod().' '.$request->getRequestUri());
});
$app->error(function (Exception $e) use ($app) {
$message = sprintf('%s: %s (uncaught exception) at %s line %s', get_class($e), $e->getMessage(), $e->getFile(), $e->getLine());
if ($e instanceof HttpExceptionInterface && $e->getStatusCode() < 500) {
$app['monolog']->addError($message);
} else {
$app['monolog']->addCritical($message);
}
}, 255);
$app->after(function (Request $request, Response $response) use ($app) {
$app['monolog']->addInfo('< '.$response->getStatusCode());
});
}
}