Commit 4905c560 authored by Fabien Potencier's avatar Fabien Potencier

feature #908 Allow overriding formatter used by default monolog.handler service. (gunnarlium)

This PR was merged into the 2.0.x-dev branch.

Discussion
----------

Allow overriding formatter used by default monolog.handler service.

This PR adds a new service, `monolog.formatter`, which is read by the default `monolog.handler` in order to allow easy override of the default formatter to use.

Commits
-------

d77204c7 Allow overriding formatter used by default monolog.handler service.
parents f55a6739 d77204c7
......@@ -13,6 +13,7 @@ namespace Silex\Provider;
use Pimple\Container;
use Pimple\ServiceProviderInterface;
use Monolog\Formatter\LineFormatter;
use Monolog\Logger;
use Monolog\Handler\StreamHandler;
use Silex\Application;
......@@ -55,10 +56,17 @@ class MonologServiceProvider implements ServiceProviderInterface, BootableProvid
return $log;
};
$app['monolog.formatter'] = function () {
return new LineFormatter();
};
$app['monolog.handler'] = function () use ($app) {
$level = MonologServiceProvider::translateLevel($app['monolog.level']);
return new StreamHandler($app['monolog.logfile'], $level, $app['monolog.bubble'], $app['monolog.permission']);
$handler = new StreamHandler($app['monolog.logfile'], $level, $app['monolog.bubble'], $app['monolog.permission']);
$handler->setFormatter($app['monolog.formatter']);
return $handler;
};
$app['monolog.level'] = function () {
......
......@@ -11,6 +11,7 @@
namespace Silex\Tests\Provider;
use Monolog\Formatter\JsonFormatter;
use Monolog\Handler\TestHandler;
use Monolog\Logger;
use Silex\Application;
......@@ -59,6 +60,17 @@ class MonologServiceProviderTest extends \PHPUnit_Framework_TestCase
$this->assertTrue($app['monolog.handler']->hasDebug('logging a message'));
}
public function testOverrideFormatter()
{
$app = new Application();
$app->register(new MonologServiceProvider());
$app['monolog.formatter'] = new JsonFormatter();
$app['monolog.logfile'] = null;
$this->assertInstanceOf('Monolog\Formatter\JsonFormatter', $app['logger']->popHandler()->getFormatter());
}
public function testErrorLogging()
{
$app = $this->getApplication();
......
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