Commit b711b707 authored by Igor Wiedler's avatar Igor Wiedler

[MonologServiceProvider] improve logging, log reponse status, improve test granularity

parent 20eeadbc
...@@ -17,6 +17,8 @@ use Monolog\Handler\StreamHandler; ...@@ -17,6 +17,8 @@ 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\Response;
use Symfony\Component\HttpKernel\Exception\HttpException; use Symfony\Component\HttpKernel\Exception\HttpException;
/** /**
...@@ -54,16 +56,16 @@ class MonologServiceProvider implements ServiceProviderInterface ...@@ -54,16 +56,16 @@ class MonologServiceProvider implements ServiceProviderInterface
$app['autoloader']->registerNamespace('Monolog', $app['monolog.class_path']); $app['autoloader']->registerNamespace('Monolog', $app['monolog.class_path']);
} }
$app->before(function () use ($app) { $app->before(function (Request $request) use ($app) {
$app['monolog']->addInfo($app['request']->getMethod().' '.$app['request']->getRequestUri()); $app['monolog']->addInfo('> '.$request->getMethod().' '.$request->getRequestUri());
}); });
$app->error(function (\Exception $e) use ($app) { $app->error(function (\Exception $e) use ($app) {
if ($e instanceof HttpException) {
$app['monolog']->addWarning($e->getStatusCode().' '.$app['request']->getMethod().' '.$app['request']->getRequestUri());
} else {
$app['monolog']->addError($e->getMessage()); $app['monolog']->addError($e->getMessage());
} });
$app->after(function (Request $request, Response $response) use ($app) {
$app['monolog']->addInfo('< '.$response->getStatusCode());
}); });
} }
} }
...@@ -32,7 +32,7 @@ class MonologServiceProviderTest extends \PHPUnit_Framework_TestCase ...@@ -32,7 +32,7 @@ class MonologServiceProviderTest extends \PHPUnit_Framework_TestCase
} }
} }
public function testRegisterAndRender() public function testRegister()
{ {
$app = new Application(); $app = new Application();
...@@ -44,10 +44,48 @@ class MonologServiceProviderTest extends \PHPUnit_Framework_TestCase ...@@ -44,10 +44,48 @@ class MonologServiceProviderTest extends \PHPUnit_Framework_TestCase
return new TestHandler($app['monolog.level']); return new TestHandler($app['monolog.level']);
}); });
return $app;
}
/**
* @depends testRegister
*/
public function testRequestLogging($app)
{
$app->get('/foo', function () use ($app) {
return 'foo';
});
$this->assertFalse($app['monolog.handler']->hasInfoRecords());
$request = Request::create('/foo');
$app->handle($request);
$this->assertTrue($app['monolog.handler']->hasInfoRecords());
}
/**
* @depends testRegister
*/
public function testManualLogging($app)
{
$app->get('/log', function () use ($app) { $app->get('/log', function () use ($app) {
$app['monolog']->addDebug('logging a message'); $app['monolog']->addDebug('logging a message');
}); });
$this->assertFalse($app['monolog.handler']->hasDebugRecords());
$request = Request::create('/log');
$app->handle($request);
$this->assertTrue($app['monolog.handler']->hasDebugRecords());
}
/**
* @depends testRegister
*/
public function testErrorLogging($app)
{
$app->get('/error', function () { $app->get('/error', function () {
throw new \RuntimeException('very bad error'); throw new \RuntimeException('very bad error');
}); });
...@@ -56,16 +94,11 @@ class MonologServiceProviderTest extends \PHPUnit_Framework_TestCase ...@@ -56,16 +94,11 @@ class MonologServiceProviderTest extends \PHPUnit_Framework_TestCase
return 'error handled'; return 'error handled';
}); });
$this->assertFalse($app['monolog.handler']->hasDebugRecords());
$this->assertFalse($app['monolog.handler']->hasErrorRecords()); $this->assertFalse($app['monolog.handler']->hasErrorRecords());
$request = Request::create('/log');
$app->handle($request);
$request = Request::create('/error'); $request = Request::create('/error');
$app->handle($request); $app->handle($request);
$this->assertTrue($app['monolog.handler']->hasDebugRecords());
$this->assertTrue($app['monolog.handler']->hasErrorRecords()); $this->assertTrue($app['monolog.handler']->hasErrorRecords());
} }
} }
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