Solution this problem:
- Create own stream handler
- Override base stream handler
Example:
Stream handler:
namespace Acme\DemoBundle\Component\Monolog;
use Monolog\Handler\StreamHandler as BaseStreamHandler;
class StreamHandler extends BaseStreamHandler
{
/**
* @{inerhitDoc}
*/
public function write(array $record)
{
if (null === $this->stream) {
// From original monolog stream handler
if (!$this->url) {
throw new \LogicException('Missing stream url, the stream can not be opened. This may be caused by a premature call to close().');
}
$dir = dirname($this->url);
if (!is_dir($dir)) {
if(!@mkdir($dir, 0777, TRUE)) {
// Control errors
}
}
}
parent::write($record);
}
}
And override base stream handler in symfony monolog package:
<parameter key="monolog.handler.stream.class">Acme\DemoBundle\Component\Monolog\StreamHandler</parameter>
Attention: This is a base example override monolog handlers in Symfony 2 package!