【发布时间】:2019-01-09 19:16:30
【问题描述】:
PHP 7.1,ubuntu 12.04 LTS,独白版本为 1.23.0。
记录器初始化:
<?php
$logger = new Logger('app');
$logger->pushHandler(
new RotatingFileHandler(
Main\Application::getDocumentRoot() . '/runtime/logs/app.log',
5,
Logger::DEBUG
)
);
目前路径中有 24 个日志文件,而不是预期的 5 个。
如何强制 monolog 按预期旋转文件?我需要做一些额外的步骤来轮换文件吗?什么原因可能导致不删除旧日志?
【问题讨论】:
-
无法重现您的问题,对我来说,它在 5 个文件后轮换。我会尝试调试这部分:github.com/Seldaek/monolog/blob/… - 如果旧文件不可写或在
unlink期间发生错误,则不会升级任何内容,并且它不会默默执行任何操作。我想你检查了文件权限(有点不太可能,创建文件的用户也应该能够再次删除它......)。 -
@userlond 你能分享你在那个目录中的文件名吗
-
@Tobias K,文件权限为
600。我通过cli运行脚本。我已经在我的脚本中添加了测试代码:is_writeable返回true,unlink在调用它们的参数等于其中一个日志的路径时是可以的。 @Tzook Bar Noy、app-2018-08-20.log、app-2018-08-19.log等等。我觉得没什么特别的。 -
主日志文件
app.log是可写的,但旧的日志文件可能不是。第二个原因是如果您使用 cronjob 运行脚本,它可能会以其他用户权限运行。 -
同意@Jared Chu。如果这是一个 cronjob,那么在您的调试中,请确保您以运行 cronjob 的同一用户身份对其进行测试。例如使用
sudo -u cronuser /usr/bin/php /path/to/cronjob
标签: php logging monolog log-rotation