Skip to content

Commit

Permalink
Merge pull request #100 from acasademont/monolog_formatter
Browse files Browse the repository at this point in the history
Added a formatter option for the monolog logger
  • Loading branch information
snc committed Aug 9, 2013
2 parents 4ca1615 + a360024 commit 9a1182a
Show file tree
Hide file tree
Showing 5 changed files with 64 additions and 0 deletions.
1 change: 1 addition & 0 deletions DependencyInjection/Configuration/Configuration.php
Expand Up @@ -207,6 +207,7 @@ private function addMonologSection(ArrayNodeDefinition $rootNode)
->children()
->scalarNode('client')->isRequired()->end()
->scalarNode('key')->isRequired()->end()
->scalarNode('formatter')->end()
->end()
->end()
->end();
Expand Down
3 changes: 3 additions & 0 deletions DependencyInjection/SncRedisExtension.php
Expand Up @@ -339,6 +339,9 @@ protected function loadMonolog(array $config, ContainerBuilder $container)
$def->setPublic(false);
$def->addMethodCall('setRedis', array(new Reference(sprintf('snc_redis.%s', $config['monolog']['client']))));
$def->addMethodCall('setKey', array($config['monolog']['key']));
if (!empty($config['monolog']['formatter'])) {
$def->addMethodCall('setFormatter', array(new Reference($config['monolog']['formatter'])));
}
$container->setDefinition('monolog.handler.redis', $def);
}

Expand Down
1 change: 1 addition & 0 deletions Resources/config/schema/redis-1.0.xsd
Expand Up @@ -99,6 +99,7 @@
<xsd:complexType name="monolog">
<xsd:attribute name="client" type="xsd:string" use="required" />
<xsd:attribute name="key" type="xsd:string" use="required" />
<xsd:attribute name="formatter" type="xsd:string" />
</xsd:complexType>

<xsd:complexType name="swiftmailer">
Expand Down
18 changes: 18 additions & 0 deletions Resources/doc/index.md
Expand Up @@ -210,6 +210,24 @@ monolog:
level: debug
```

You can also add a custom formatter to the monolog handler

``` yaml
snc_redis:
clients:
monolog:
type: predis
alias: monolog
dsn: redis://localhost/1
logging: false
options:
connection_persistent: true
monolog:
client: monolog
key: monolog
formatter: my_custom_formatter
```

### SwiftMailer spooling ###

You can spool your mails in a redis `LIST` by adding this to your config:
Expand Down
41 changes: 41 additions & 0 deletions Tests/DependencyInjection/SncRedisExtensionTest.php
Expand Up @@ -17,6 +17,7 @@
use Symfony\Component\Config\Definition\Processor;
use Symfony\Component\Config\FileLocator;
use Symfony\Component\DependencyInjection\ContainerBuilder;
use Symfony\Component\DependencyInjection\Definition;
use Symfony\Component\DependencyInjection\Loader\XmlFileLoader;
use Symfony\Component\Yaml\Parser;

Expand Down Expand Up @@ -159,6 +160,30 @@ public function testInvalidMonologConfigLoad()
$extension->load(array($config), $container = new ContainerBuilder());
}

/**
* Test the monolog formatter option
*/
public function testMonologFormatterOption()
{
$container = new ContainerBuilder();
//Create a fake formatter definition
$container->setDefinition('my_monolog_formatter', new Definition('Monolog\\Formatter\\LogstashFormatter', array('symfony')));
$extension = new SncRedisExtension();
$config = $this->parseYaml($this->getMonologFormatterOptionYamlConfig());
$extension->load(array($config), $container);

$loggerDefinition = $container->getDefinition('monolog.handler.redis');
$calls = $loggerDefinition->getMethodCalls();
$this->assertTrue($loggerDefinition->hasMethodCall('setFormatter'));
$calls = $loggerDefinition->getMethodCalls();
foreach ($calls as $call) {
if ($call[0] === 'setFormatter') {
$this->assertEquals('my_monolog_formatter', (string) $call[1][0]);
break;
}
}
}

/**
* Test valid parsing of the client profile option
*/
Expand Down Expand Up @@ -329,6 +354,22 @@ private function getInvalidMonologYamlConfig()
EOF;
}

private function getMonologFormatterOptionYamlConfig()
{
return <<<'EOF'
clients:
monolog:
type: predis
alias: monolog
dsn: redis://localhost
logging: false
monolog:
client: monolog
key: monolog
formatter: my_monolog_formatter
EOF;
}

private function getMergeConfig1()
{
return <<<'EOF'
Expand Down

0 comments on commit 9a1182a

Please sign in to comment.