Skip to content

Commit

Permalink
feature #242 Add stream handler lock option (mRoca)
Browse files Browse the repository at this point in the history
This PR was merged into the 3.x-dev branch.

Discussion
----------

Add stream handler lock option

This PR adds the $useLocking StreamHandler argument : https://github.com/Seldaek/monolog/blob/master/src/Monolog/Handler/StreamHandler.php#L44

Commits
-------

00ed2f3 Add stream handler lock option
  • Loading branch information
lyrixx committed May 16, 2019
2 parents a6c3267 + 00ed2f3 commit 036cd4b
Show file tree
Hide file tree
Showing 6 changed files with 38 additions and 8 deletions.
3 changes: 3 additions & 0 deletions DependencyInjection/Configuration.php
Expand Up @@ -31,6 +31,8 @@
* - path: string
* - [level]: level name or int value, defaults to DEBUG
* - [bubble]: bool, defaults to true
* - [file_permission]: int|null, defaults to null (0644)
* - [use_locking]: bool, defaults to false
*
* - console:
* - [verbosity_levels]: level => verbosity configuration
Expand Down Expand Up @@ -361,6 +363,7 @@ public function getConfigTreeBuilder()
})
->end()
->end()
->booleanNode('use_locking')->defaultFalse()->end() // stream
->scalarNode('filename_format')->defaultValue('{filename}-{date}')->end() //rotating
->scalarNode('date_format')->defaultValue('Y-m-d')->end() //rotating
->scalarNode('ident')->defaultFalse()->end() // syslog and syslogudp
Expand Down
1 change: 1 addition & 0 deletions DependencyInjection/MonologExtension.php
Expand Up @@ -186,6 +186,7 @@ private function buildHandler(ContainerBuilder $container, $name, array $handler
$handler['level'],
$handler['bubble'],
$handler['file_permission'],
$handler['use_locking'],
));
break;

Expand Down
1 change: 1 addition & 0 deletions Resources/config/schema/monolog-1.0.xsd
Expand Up @@ -34,6 +34,7 @@
<xsd:attribute name="level" type="level" />
<xsd:attribute name="bubble" type="xsd:boolean" />
<xsd:attribute name="process-psr-3-messages" type="xsd:boolean" />
<xsd:attribute name="use_locking" type="xsd:boolean" />
<xsd:attribute name="app-name" type="xsd:string" />
<xsd:attribute name="path" type="xsd:string" />
<xsd:attribute name="id" type="xsd:string" />
Expand Down
25 changes: 25 additions & 0 deletions Tests/DependencyInjection/ConfigurationTest.php
Expand Up @@ -324,6 +324,31 @@ public function testWithFilePermission()
$this->assertSame(0777, $config['handlers']['bar']['file_permission']);
}

public function testWithUseLocking()
{
$configs = array(
array(
'handlers' => array(
'foo' => array(
'type' => 'stream',
'path' => '/foo',
'use_locking' => false,
),
'bar' => array(
'type' => 'stream',
'path' => '/bar',
'use_locking' => true,
)
)
)
);

$config = $this->process($configs);

$this->assertFalse($config['handlers']['foo']['use_locking']);
$this->assertTrue($config['handlers']['bar']['use_locking']);
}

public function testWithNestedHandler()
{
$configs = array(
Expand Down
8 changes: 4 additions & 4 deletions Tests/DependencyInjection/FixtureMonologExtensionTest.php
Expand Up @@ -37,7 +37,7 @@ public function testLoadWithSeveralHandlers()

$handler = $container->getDefinition('monolog.handler.custom');
$this->assertDICDefinitionClass($handler, 'Monolog\Handler\StreamHandler');
$this->assertDICConstructorArguments($handler, array('/tmp/symfony.log', \Monolog\Logger::ERROR, false, 0666));
$this->assertDICConstructorArguments($handler, array('/tmp/symfony.log', \Monolog\Logger::ERROR, false, 0666, false));

$handler = $container->getDefinition('monolog.handler.main');
$this->assertDICDefinitionClass($handler, 'Monolog\Handler\FingersCrossedHandler');
Expand Down Expand Up @@ -65,7 +65,7 @@ public function testLoadWithOverwriting()

$handler = $container->getDefinition('monolog.handler.custom');
$this->assertDICDefinitionClass($handler, 'Monolog\Handler\StreamHandler');
$this->assertDICConstructorArguments($handler, array('/tmp/symfony.log', \Monolog\Logger::WARNING, true, null));
$this->assertDICConstructorArguments($handler, array('/tmp/symfony.log', \Monolog\Logger::WARNING, true, null, false));

$handler = $container->getDefinition('monolog.handler.main');
$this->assertDICDefinitionClass($handler, 'Monolog\Handler\FingersCrossedHandler');
Expand All @@ -91,7 +91,7 @@ public function testLoadWithNewAtEnd()

$handler = $container->getDefinition('monolog.handler.new');
$this->assertDICDefinitionClass($handler, 'Monolog\Handler\StreamHandler');
$this->assertDICConstructorArguments($handler, array('/tmp/monolog.log', \Monolog\Logger::ERROR, true, null));
$this->assertDICConstructorArguments($handler, array('/tmp/monolog.log', \Monolog\Logger::ERROR, true, null, false));
}

public function testLoadWithNewAndPriority()
Expand Down Expand Up @@ -123,7 +123,7 @@ public function testLoadWithNewAndPriority()

$handler = $container->getDefinition('monolog.handler.last');
$this->assertDICDefinitionClass($handler, 'Monolog\Handler\StreamHandler');
$this->assertDICConstructorArguments($handler, array('/tmp/last.log', \Monolog\Logger::ERROR, true, null));
$this->assertDICConstructorArguments($handler, array('/tmp/last.log', \Monolog\Logger::ERROR, true, null, false));
}

public function testHandlersWithChannels()
Expand Down
8 changes: 4 additions & 4 deletions Tests/DependencyInjection/MonologExtensionTest.php
Expand Up @@ -33,14 +33,14 @@ public function testLoadWithDefault()

$handler = $container->getDefinition('monolog.handler.main');
$this->assertDICDefinitionClass($handler, 'Monolog\Handler\StreamHandler');
$this->assertDICConstructorArguments($handler, array('%kernel.logs_dir%/%kernel.environment%.log', \Monolog\Logger::DEBUG, true, null));
$this->assertDICConstructorArguments($handler, array('%kernel.logs_dir%/%kernel.environment%.log', \Monolog\Logger::DEBUG, true, null, false));
$this->assertDICDefinitionMethodCallAt(0, $handler, 'pushProcessor', array(new Reference('monolog.processor.psr_log_message')));
}

public function testLoadWithCustomValues()
{
$container = $this->getContainer(array(array('handlers' => array(
'custom' => array('type' => 'stream', 'path' => '/tmp/symfony.log', 'bubble' => false, 'level' => 'ERROR', 'file_permission' => '0666')
'custom' => array('type' => 'stream', 'path' => '/tmp/symfony.log', 'bubble' => false, 'level' => 'ERROR', 'file_permission' => '0666', 'use_locking' => true)
))));
$this->assertTrue($container->hasDefinition('monolog.logger'));
$this->assertTrue($container->hasDefinition('monolog.handler.custom'));
Expand All @@ -51,7 +51,7 @@ public function testLoadWithCustomValues()

$handler = $container->getDefinition('monolog.handler.custom');
$this->assertDICDefinitionClass($handler, 'Monolog\Handler\StreamHandler');
$this->assertDICConstructorArguments($handler, array('/tmp/symfony.log', \Monolog\Logger::ERROR, false, 0666));
$this->assertDICConstructorArguments($handler, array('/tmp/symfony.log', \Monolog\Logger::ERROR, false, 0666, true));
}

public function testLoadWithNestedHandler()
Expand All @@ -71,7 +71,7 @@ public function testLoadWithNestedHandler()

$handler = $container->getDefinition('monolog.handler.custom');
$this->assertDICDefinitionClass($handler, 'Monolog\Handler\StreamHandler');
$this->assertDICConstructorArguments($handler, array('/tmp/symfony.log', \Monolog\Logger::ERROR, false, 0666));
$this->assertDICConstructorArguments($handler, array('/tmp/symfony.log', \Monolog\Logger::ERROR, false, 0666, false));
}

public function testLoadWithServiceHandler()
Expand Down

0 comments on commit 036cd4b

Please sign in to comment.