我将symfony用于每天运行的cron运行应用程序
我想使用monolog编写info
报告然后我可以发送电子邮件,所以我正在寻找一种方法来按会话ID分隔文件。例如:
report:
type: stream
path: "%kernel.logs_dir%/%kernel.environment%-%sessionid%.log"
level: info
可以这样做吗?
答案 0 :(得分:1)
您必须覆盖AppKernel
:
<?php
use Symfony\Component\HttpKernel\Kernel;
use Symfony\Component\Config\Loader\LoaderInterface;
class AppKernel extends Kernel
{
protected $sessionId;
public function __construct($environment, $debug, $sessionId)
{
$this->sessionId = $sessionId;
parent::_construct($environment, $debug);
}
/**
* {@inheritdoc}
* @see \Symfony\Component\HttpKernel\Kernel::getKernelParameters()
*/
protected function getKernelParameters()
{
$parameters = parent::getKernelParameters();
// Adding session_id parameter
$parameters['kernel.session_id'] = $this->sessionId;
return $parameters;
}
/**
* Your function here [...]
**
}
现在您可以在config.yml中使用%kernel.session_id%
monolog:
handlers:
report:
type: stream
path: "%kernel.logs_dir%/%kernel.environment%-%kernel.session_id%.log"
level: info
在您的app.php
:
$sessionId = '123';
$kernel = new AppKernel('prod', false, $sessionId);
您只需将$sessionId
作为脚本的参数传递