This PHP package allows you to rotate a log file and compress it.
Note: If you have the version 1 installed, read this.
You can install this package via composer using:
composer require cesargb/php-log-rotation
use Cesargb\Log\Rotation;
use Cesargb\Log\Exceptions\RotationFailed;
$rotation = new Rotation();
$rotation
->compress() // Optional, compress the file after rotated. Accept level compression argument.
->files(30) // Optional, files are rotated 30 times before being removed. Default 366
->minSize(1024) // Optional, are rotated when they grow bigger than 1024 bytes. Default 0
->truncate() // Optional, truncate the original log file in place after creating a copy, instead of moving the old log file.
->then(function ($filenameTarget, $filenameRotated) {}) // Optional, to get filename target and original filename
->catch(function (RotationFailed $exception) {}) // Optional, to catch a exception in rotating
->finally(function ($message, $filenameTarget) {}) // Optional, this method will be called when the process has finished
->rotate('file.log');
Or you can define the options in the constructor
use Cesargb\Log\Rotation;
use Cesargb\Log\Exceptions\RotationFailed;
$rotation = new Rotation([
'files' => 1,
'compress' => true, // Set level compression or true to default level. Default false
'min-size' => 10,
'truncate' => false,
'then' => function ($filename) {},
'catch' => function (RotationFailed $exception) {},
'finally' => function ($message, $filename) {},
]);
$rotation->rotate('file.log');
Run test with:
composer test
Any contributions are welcome.