我使用Symfony 2.2和Monolog包。
我在Monolog的处理程序:
monolog:
handlers:
type: stream
path: "%kernel.logs_dir%/%kernel.environment%/my-path/error.log"
level: error
但是如果目录不存在,则流处理程序不会自动创建目录。 如何自动创建目录?可以事件调度员,但我没有看到monolog上的事件((
感谢。
答案 0 :(得分:3)
解决这个问题:
示例:
流处理程序:
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);
}
}
并覆盖symfony monolog包中的基本流处理程序:
<parameter key="monolog.handler.stream.class">Acme\DemoBundle\Component\Monolog\StreamHandler</parameter>
<强>注意:强> 这是Symfony 2包中的基本示例覆盖monolog处理程序!