Commit c5e7a0b3 authored by Fabien Potencier's avatar Fabien Potencier

made monolog logger as the default logger when the monolog bridge is installed

parent c7536412
{ {
"hash": "d22b382f0e20509713b06e6991c82e07", "hash": "142455bfe45755d318953c04880d43f2",
"packages": [ "packages": [
{ {
"package": "pimple/pimple", "package": "pimple/pimple",
...@@ -25,11 +25,6 @@ ...@@ -25,11 +25,6 @@
"version": "dev-master", "version": "dev-master",
"source-reference": "6ab1b5f07dd972d2c5e3b5d48c9776d0823149c7" "source-reference": "6ab1b5f07dd972d2c5e3b5d48c9776d0823149c7"
}, },
{
"package": "symfony/class-loader",
"version": "dev-master",
"source-reference": "c57e62c886899f8d88264efad23c857eb198dc09"
},
{ {
"package": "symfony/class-loader", "package": "symfony/class-loader",
"version": "dev-master", "version": "dev-master",
...@@ -88,14 +83,14 @@ ...@@ -88,14 +83,14 @@
{ {
"package": "symfony/http-foundation", "package": "symfony/http-foundation",
"version": "dev-master", "version": "dev-master",
"source-reference": "5b1581418381f46679604fd19efc8b518f2390ae", "source-reference": "5b1581418381f46679604fd19efc8b518f2390ae"
"alias-pretty-version": "2.1.x-dev",
"alias-version": "2.1.9999999.9999999-dev"
}, },
{ {
"package": "symfony/http-foundation", "package": "symfony/http-foundation",
"version": "dev-master", "version": "dev-master",
"source-reference": "5b1581418381f46679604fd19efc8b518f2390ae" "source-reference": "5b1581418381f46679604fd19efc8b518f2390ae",
"alias-pretty-version": "2.1.x-dev",
"alias-version": "2.1.9999999.9999999-dev"
}, },
{ {
"package": "symfony/http-kernel", "package": "symfony/http-kernel",
...@@ -124,21 +119,28 @@ ...@@ -124,21 +119,28 @@
{ {
"package": "symfony/routing", "package": "symfony/routing",
"version": "dev-master", "version": "dev-master",
"source-reference": "aec133671d79d530d09aa0b5ca4cea9e4ee4b274" "source-reference": "aec133671d79d530d09aa0b5ca4cea9e4ee4b274",
"alias-pretty-version": "2.1.x-dev",
"alias-version": "2.1.9999999.9999999-dev"
}, },
{ {
"package": "symfony/routing", "package": "symfony/routing",
"version": "dev-master", "version": "dev-master",
"source-reference": "aec133671d79d530d09aa0b5ca4cea9e4ee4b274", "source-reference": "aec133671d79d530d09aa0b5ca4cea9e4ee4b274"
"alias-pretty-version": "2.1.x-dev",
"alias-version": "2.1.9999999.9999999-dev"
} }
], ],
"packages-dev": [ "packages-dev": [
{ {
"package": "doctrine/common", "package": "doctrine/common",
"version": "2.2.x-dev", "version": "dev-master",
"source-reference": "1e0aa60d109c630d19543d999f12e2852ef8f932" "source-reference": "8b403cde97eaede30bd79acab4f18895fd5bdf27",
"alias-pretty-version": "2.3.x-dev",
"alias-version": "2.3.9999999.9999999-dev"
},
{
"package": "doctrine/common",
"version": "dev-master",
"source-reference": "8b403cde97eaede30bd79acab4f18895fd5bdf27"
}, },
{ {
"package": "doctrine/dbal", "package": "doctrine/dbal",
...@@ -147,20 +149,19 @@ ...@@ -147,20 +149,19 @@
}, },
{ {
"package": "monolog/monolog", "package": "monolog/monolog",
"version": "dev-master", "version": "1.1.0"
"source-reference": "2eb0c0978d290a1c45346a1955188929cb4e5db7"
}, },
{ {
"package": "symfony/form", "package": "symfony/form",
"version": "dev-master", "version": "dev-master",
"source-reference": "f410a9e3440b1248f8941d332d9e65b80e573ec5", "source-reference": "f410a9e3440b1248f8941d332d9e65b80e573ec5"
"alias-pretty-version": "2.1.x-dev",
"alias-version": "2.1.9999999.9999999-dev"
}, },
{ {
"package": "symfony/form", "package": "symfony/form",
"version": "dev-master", "version": "dev-master",
"source-reference": "f410a9e3440b1248f8941d332d9e65b80e573ec5" "source-reference": "f410a9e3440b1248f8941d332d9e65b80e573ec5",
"alias-pretty-version": "2.1.x-dev",
"alias-version": "2.1.9999999.9999999-dev"
}, },
{ {
"package": "symfony/locale", "package": "symfony/locale",
...@@ -175,9 +176,14 @@ ...@@ -175,9 +176,14 @@
"source-reference": "6a9e36fef0eedcd52b0dde361faab38f4615fe48" "source-reference": "6a9e36fef0eedcd52b0dde361faab38f4615fe48"
}, },
{ {
"package": "symfony/options-resolver", "package": "symfony/monolog-bridge",
"version": "dev-master", "version": "dev-master",
"source-reference": "92c19fb262283a348093bbd32b5c5dfef8f00612", "source-reference": "7ef27aa6b88447989fe5da551c2d2746d4cf60aa"
},
{
"package": "symfony/monolog-bridge",
"version": "dev-master",
"source-reference": "7ef27aa6b88447989fe5da551c2d2746d4cf60aa",
"alias-pretty-version": "2.1.x-dev", "alias-pretty-version": "2.1.x-dev",
"alias-version": "2.1.9999999.9999999-dev" "alias-version": "2.1.9999999.9999999-dev"
}, },
...@@ -187,9 +193,11 @@ ...@@ -187,9 +193,11 @@
"source-reference": "92c19fb262283a348093bbd32b5c5dfef8f00612" "source-reference": "92c19fb262283a348093bbd32b5c5dfef8f00612"
}, },
{ {
"package": "symfony/translation", "package": "symfony/options-resolver",
"version": "dev-master", "version": "dev-master",
"source-reference": "f89af1b91bbb9ee9151e3516aeaf1eda7992a369" "source-reference": "92c19fb262283a348093bbd32b5c5dfef8f00612",
"alias-pretty-version": "2.1.x-dev",
"alias-version": "2.1.9999999.9999999-dev"
}, },
{ {
"package": "symfony/translation", "package": "symfony/translation",
...@@ -198,6 +206,11 @@ ...@@ -198,6 +206,11 @@
"alias-pretty-version": "2.1.x-dev", "alias-pretty-version": "2.1.x-dev",
"alias-version": "2.1.9999999.9999999-dev" "alias-version": "2.1.9999999.9999999-dev"
}, },
{
"package": "symfony/translation",
"version": "dev-master",
"source-reference": "f89af1b91bbb9ee9151e3516aeaf1eda7992a369"
},
{ {
"package": "symfony/twig-bridge", "package": "symfony/twig-bridge",
"version": "dev-master", "version": "dev-master",
...@@ -225,7 +238,7 @@ ...@@ -225,7 +238,7 @@
{ {
"package": "twig/twig", "package": "twig/twig",
"version": "dev-master", "version": "dev-master",
"source-reference": "e28663efd83d76ee36bf9e8a790f75bd880abbf2", "source-reference": "45d0f6fe67e2199d1148cf1c7e832674af4e8e93",
"alias-pretty-version": "1.8.x-dev", "alias-pretty-version": "1.8.x-dev",
"alias-version": "1.8.9999999.9999999-dev" "alias-version": "1.8.9999999.9999999-dev"
}, },
...@@ -239,7 +252,7 @@ ...@@ -239,7 +252,7 @@
{ {
"package": "twig/twig", "package": "twig/twig",
"version": "dev-master", "version": "dev-master",
"source-reference": "e28663efd83d76ee36bf9e8a790f75bd880abbf2" "source-reference": "45d0f6fe67e2199d1148cf1c7e832674af4e8e93"
} }
], ],
"aliases": [ "aliases": [
......
...@@ -218,6 +218,8 @@ don't want to mess with most of them. ...@@ -218,6 +218,8 @@ don't want to mess with most of them.
* **logger**: A * **logger**: A
`http://api.symfony.com/master/Symfony/Component/HttpKernel/Log/LoggerInterface.html`_ `http://api.symfony.com/master/Symfony/Component/HttpKernel/Log/LoggerInterface.html`_
instance. By default, logging is disabled as the value is set to `null`. instance. By default, logging is disabled as the value is set to `null`.
When the Symfony2 Monolog bridge is installed, Monolog is automatically used
as the default logger.
.. note:: .. note::
......
...@@ -13,10 +13,8 @@ namespace Silex\Provider; ...@@ -13,10 +13,8 @@ namespace Silex\Provider;
use Monolog\Logger; use Monolog\Logger;
use Monolog\Handler\StreamHandler; use Monolog\Handler\StreamHandler;
use Silex\Application; use Silex\Application;
use Silex\ServiceProviderInterface; use Silex\ServiceProviderInterface;
use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response; use Symfony\Component\HttpFoundation\Response;
...@@ -29,8 +27,16 @@ class MonologServiceProvider implements ServiceProviderInterface ...@@ -29,8 +27,16 @@ class MonologServiceProvider implements ServiceProviderInterface
{ {
public function register(Application $app) public function register(Application $app)
{ {
$app['monolog'] = $app->share(function () use ($app) { if ($bridge = class_exists('Symfony\Bridge\Monolog\Logger')) {
$log = new Logger(isset($app['monolog.name']) ? $app['monolog.name'] : 'myapp'); $app['logger'] = function () use ($app) {
return $app['monolog'];
};
}
$app['monolog'] = $app->share(function () use ($app, $bridge) {
$class = $bridge ? 'Symfony\Bridge\Monolog\Logger' : 'Monolog\Logger';
$log = new $class(isset($app['monolog.name']) ? $app['monolog.name'] : 'myapp');
$app['monolog.configure']($log); $app['monolog.configure']($log);
...@@ -60,7 +66,7 @@ class MonologServiceProvider implements ServiceProviderInterface ...@@ -60,7 +66,7 @@ class MonologServiceProvider implements ServiceProviderInterface
$app->error(function (\Exception $e) use ($app) { $app->error(function (\Exception $e) use ($app) {
$app['monolog']->addError($e->getMessage()); $app['monolog']->addError($e->getMessage());
}); }, 255);
$app->after(function (Request $request, Response $response) use ($app) { $app->after(function (Request $request, Response $response) use ($app) {
$app['monolog']->addInfo('< '.$response->getStatusCode()); $app['monolog']->addInfo('< '.$response->getStatusCode());
......
...@@ -12,10 +12,8 @@ ...@@ -12,10 +12,8 @@
namespace Silex\Tests\Provider; namespace Silex\Tests\Provider;
use Monolog\Handler\TestHandler; use Monolog\Handler\TestHandler;
use Silex\Application; use Silex\Application;
use Silex\Provider\MonologServiceProvider; use Silex\Provider\MonologServiceProvider;
use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Request;
/** /**
...@@ -32,24 +30,10 @@ class MonologServiceProviderTest extends \PHPUnit_Framework_TestCase ...@@ -32,24 +30,10 @@ class MonologServiceProviderTest extends \PHPUnit_Framework_TestCase
} }
} }
public function testRegister() public function testRequestLogging()
{ {
$app = new Application(); $app = $this->getApplication();
$app->register(new MonologServiceProvider());
$app['monolog.handler'] = $app->share(function () use ($app) {
return new TestHandler($app['monolog.level']);
});
return $app;
}
/**
* @depends testRegister
*/
public function testRequestLogging($app)
{
$app->get('/foo', function () use ($app) { $app->get('/foo', function () use ($app) {
return 'foo'; return 'foo';
}); });
...@@ -59,14 +43,15 @@ class MonologServiceProviderTest extends \PHPUnit_Framework_TestCase ...@@ -59,14 +43,15 @@ class MonologServiceProviderTest extends \PHPUnit_Framework_TestCase
$request = Request::create('/foo'); $request = Request::create('/foo');
$app->handle($request); $app->handle($request);
$this->assertTrue($app['monolog.handler']->hasInfoRecords()); $this->assertTrue($app['monolog.handler']->hasInfo('> GET /foo'));
$this->assertTrue($app['monolog.handler']->hasInfo('< 200'));
$this->assertTrue($app['monolog.handler']->hasInfo('Matched route "GET_foo" (parameters: "_controller": "{}", "_route": "GET_foo")'));
} }
/** public function testManualLogging()
* @depends testRegister
*/
public function testManualLogging($app)
{ {
$app = $this->getApplication();
$app->get('/log', function () use ($app) { $app->get('/log', function () use ($app) {
$app['monolog']->addDebug('logging a message'); $app['monolog']->addDebug('logging a message');
}); });
...@@ -76,14 +61,13 @@ class MonologServiceProviderTest extends \PHPUnit_Framework_TestCase ...@@ -76,14 +61,13 @@ class MonologServiceProviderTest extends \PHPUnit_Framework_TestCase
$request = Request::create('/log'); $request = Request::create('/log');
$app->handle($request); $app->handle($request);
$this->assertTrue($app['monolog.handler']->hasDebugRecords()); $this->assertTrue($app['monolog.handler']->hasDebug('logging a message'));
} }
/** public function testErrorLogging()
* @depends testRegister
*/
public function testErrorLogging($app)
{ {
$app = $this->getApplication();
$app->get('/error', function () { $app->get('/error', function () {
throw new \RuntimeException('very bad error'); throw new \RuntimeException('very bad error');
}); });
...@@ -97,6 +81,19 @@ class MonologServiceProviderTest extends \PHPUnit_Framework_TestCase ...@@ -97,6 +81,19 @@ class MonologServiceProviderTest extends \PHPUnit_Framework_TestCase
$request = Request::create('/error'); $request = Request::create('/error');
$app->handle($request); $app->handle($request);
$this->assertTrue($app['monolog.handler']->hasErrorRecords()); $this->assertTrue($app['monolog.handler']->hasError('very bad error'));
}
protected function getApplication()
{
$app = new Application();
$app->register(new MonologServiceProvider());
$app['monolog.handler'] = $app->share(function () use ($app) {
return new TestHandler($app['monolog.level']);
});
return $app;
} }
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment