我在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 天时重写(或删除并写入)同一文件。
我读到了关于日志轮换的内容,但这不是我需要的内容。我不需要使用其他名称保存此文件并开始重写它。我只是想重写这个文件。我怎么能这样做?
答案 0 :(得分:0)
您可以为自定义记录器创建自定义处理程序(一天=一个日志文件)。
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]
$这 - >获得(' your.logger') - >信息();
还有一个
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]
$这 - >获得(' crm.logger') - >信息();