Symfony Monolog 重写同一个文件
Symfony Monolog rewrites the same file
我用 Monolog 服务:
cmd_local.logger:
class: Symfony\Bridge\Monolog\Logger
arguments: [app]
calls:
- [pushHandler, [@cmd_local.logger_handler]]
cmd_local.logger_handler:
class: Monolog\Handler\StreamHandler
arguments: [%kernel.logs_dir%/%kernel.environment%.cmd.local.log, 200]
我现在需要的是当这个文件超过 x 天时重写(或删除和写入)同一个文件。
我阅读了有关日志轮换的内容,但这不是我需要的。我不需要用另一个名字保存这个文件并开始重写它。我只想重写这个文件。我该怎么做?
您可以为自定义记录器创建自定义处理程序(一天 = 一个日志文件)。
class FilenameContainsDateStreamHandler extends StreamHandler
{
public function __construct(
$stream,
$level = Logger::DEBUG,
$bubble = true,
$filePermission = null,
$useLocking = false
) {
$stream = str_replace(
'.log', '-' . date('Y-m-d') . '.log', $stream
);
parent::__construct(
$stream,
$level,
$bubble,
$filePermission,
$useLocking
);
}
}
并重新注册新的记录器
your.logger:
class: Symfony\Bridge\Monolog\Logger
arguments: [your_tag]
calls:
- [pushHandler, [@your.monolog.handler]]
your.monolog.handler:
class: AppBundle\Monolog\Handler\FilenameContainsDateStreamHandler
arguments: [%kernel.logs_dir%/your.log]
$this->get('your.logger')->info();
还有一个
crm.logger:
class: Symfony\Bridge\Monolog\Logger
arguments: [crm_tag]
calls:
- [pushHandler, [@crm.monolog.handler]]
crm.monolog.handler:
class: AppBundle\Monolog\Handler\FilenameContainsDateStreamHandler
arguments: [%kernel.logs_dir%/crm.log]
$this->get('crm.logger')->info();
我用 Monolog 服务:
cmd_local.logger:
class: Symfony\Bridge\Monolog\Logger
arguments: [app]
calls:
- [pushHandler, [@cmd_local.logger_handler]]
cmd_local.logger_handler:
class: Monolog\Handler\StreamHandler
arguments: [%kernel.logs_dir%/%kernel.environment%.cmd.local.log, 200]
我现在需要的是当这个文件超过 x 天时重写(或删除和写入)同一个文件。
我阅读了有关日志轮换的内容,但这不是我需要的。我不需要用另一个名字保存这个文件并开始重写它。我只想重写这个文件。我该怎么做?
您可以为自定义记录器创建自定义处理程序(一天 = 一个日志文件)。
class FilenameContainsDateStreamHandler extends StreamHandler
{
public function __construct(
$stream,
$level = Logger::DEBUG,
$bubble = true,
$filePermission = null,
$useLocking = false
) {
$stream = str_replace(
'.log', '-' . date('Y-m-d') . '.log', $stream
);
parent::__construct(
$stream,
$level,
$bubble,
$filePermission,
$useLocking
);
}
}
并重新注册新的记录器
your.logger:
class: Symfony\Bridge\Monolog\Logger
arguments: [your_tag]
calls:
- [pushHandler, [@your.monolog.handler]]
your.monolog.handler:
class: AppBundle\Monolog\Handler\FilenameContainsDateStreamHandler
arguments: [%kernel.logs_dir%/your.log]
$this->get('your.logger')->info();
还有一个
crm.logger:
class: Symfony\Bridge\Monolog\Logger
arguments: [crm_tag]
calls:
- [pushHandler, [@crm.monolog.handler]]
crm.monolog.handler:
class: AppBundle\Monolog\Handler\FilenameContainsDateStreamHandler
arguments: [%kernel.logs_dir%/crm.log]
$this->get('crm.logger')->info();