Monolog记录每个会话的文件

时间:2015-04-14 15:02:42

标签: symfony monolog

我将symfony用于每天运行的cron运行应用程序

我想使用monolog编写info报告然后我可以发送电子邮件,所以我正在寻找一种方法来按会话ID分隔文件。例如:

report:
 type:   stream
 path:   "%kernel.logs_dir%/%kernel.environment%-%sessionid%.log"
 level:  info

可以这样做吗?

1 个答案:

答案 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作为脚本的参数传递