每个会话的 Monolog 日志文件
Monolog logs file for every session
我将 symfony 用于一个每天 运行 的 cron 运行 应用程序
我想使用 monolog 编写一份 info
报告,然后我可以通过电子邮件发送该报告,因此我正在寻找一种通过会话 ID 分隔文件的方法。示例:
report:
type: stream
path: "%kernel.logs_dir%/%kernel.environment%-%sessionid%.log"
level: info
这可以做到吗?
您必须覆盖 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
作为脚本的参数传递
我将 symfony 用于一个每天 运行 的 cron 运行 应用程序
我想使用 monolog 编写一份 info
报告,然后我可以通过电子邮件发送该报告,因此我正在寻找一种通过会话 ID 分隔文件的方法。示例:
report:
type: stream
path: "%kernel.logs_dir%/%kernel.environment%-%sessionid%.log"
level: info
这可以做到吗?
您必须覆盖 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
作为脚本的参数传递