Поскольку ограничение размера существует не во всех обработчиках Monolog, мне пришлось написать его.Пожалуйста, найдите ниже мое решение, написанное для Slim 3 Framework.Я уверен, что вы можете адаптировать его к своему собственному случаю
// SLIM 3 framework, from dependencies.php
...
// monolog setup with rotating files according to a size
$container['logger'] = function ($c) {
// get the settings (array, see below)
$settings = $c->get('settings')['logger'];
// rotate log file on size
$logname = $settings['path'];
if (file_exists($logname) && filesize($logname) > $settings['maxSize']) {
$path_parts = pathinfo($logname);
$pattern = $path_parts['dirname']. '/'. $path_parts['filename']. "-%d.". $path_parts['extension'];
// delete last log
$fn = sprintf($pattern, $settings['maxFiles']);
if (file_exists($fn))
unlink($fn);
// shift file names (add '-%index' before the extension)
for ($i = $settings['maxFiles']-1; $i > 0; $i--) {
$fn = sprintf($pattern, $i);
if(file_exists($fn))
rename($fn, sprintf($pattern, $i+1));
}
rename($logname, sprintf($pattern, 1));
}
$stream = new Monolog\Handler\StreamHandler($logname, $settings['level']);
// declare finally the logger
$logger = new Monolog\Logger($logname);
$logger->pushHandler($stream);
return $logger; // ready to log ;)
};
...
Ниже приведен пример настроек Monolog в массиве
'logger' => [
'name' => 'helloStack',
'path' => __DIR__ . '/../logs/app.log',
'level' => \Monolog\Logger::NOTICE,
'maxSize' => 100000, // rotate log if exceeds 100Kb
'maxFiles' => 3
],