static function rotateLog($fileName)
 {
     $maxLogrotateFiles = eZDebug::maxLogrotateFiles();
     for ($i = $maxLogrotateFiles; $i > 0; --$i) {
         $logRotateName = $fileName . '.' . $i;
         if (@file_exists($logRotateName)) {
             if ($i == $maxLogrotateFiles) {
                 @unlink($logRotateName);
                 //                     print( "@unlink( $logRotateName )<br/>" );
             } else {
                 $newLogRotateName = $fileName . '.' . ($i + 1);
                 //include_once( 'lib/ezfile/classes/ezfile.php' );
                 eZFile::rename($logRotateName, $newLogRotateName);
                 //                     print( "@rename( $logRotateName, $newLogRotateName )<br/>" );
             }
         }
     }
     if (@file_exists($fileName)) {
         $newLogRotateName = $fileName . '.' . 1;
         //include_once( 'lib/ezfile/classes/ezfile.php' );
         eZFile::rename($fileName, $newLogRotateName);
         //             print( "@rename( $fileName, $newLogRotateName )<br/>" );
         return true;
     }
     return false;
 }
 static function rotateLog($fileName)
 {
     $maxLogrotateFiles = eZDebug::maxLogrotateFiles();
     if ($maxLogrotateFiles == 0) {
         return;
     }
     for ($i = $maxLogrotateFiles; $i > 0; --$i) {
         $logRotateName = $fileName . '.' . $i;
         if (file_exists($logRotateName)) {
             if ($i == $maxLogrotateFiles) {
                 @unlink($logRotateName);
             } else {
                 $newLogRotateName = $fileName . '.' . ($i + 1);
                 eZFile::rename($logRotateName, $newLogRotateName);
             }
         }
     }
     if (file_exists($fileName)) {
         $newLogRotateName = $fileName . '.' . 1;
         eZFile::rename($fileName, $newLogRotateName);
         return true;
     }
     return false;
 }
<?php

/**
 * Rotate logs of ws calls: since we store them in the per-sa dir, eZ will not do it on its own.
 *
 * We are very nice people, and allow a custom max file size to be specified
 * instead of relying on eZ default one, and a number of rotated files to be kept, too!
 *
 * @author G. Giunta
 * @copyright (C) 2009-2016 G. Giunta
 */
$ini = eZINI::instance('wsproviders.ini');
$maxFileSize = $ini->variable('GeneralSettings', 'MaxLogSize');
if ($maxFileSize <= 0) {
    // in case ini setting is missing
    $maxFileSize = eZDebug::maxLogSize();
}
if ($ini->hasVariable('GeneralSettings', 'MaxLogrotateFiles') && $ini->variable('GeneralSettings', 'MaxLogrotateFiles') > 0) {
    $defaultrotate = eZDebug::maxLogrotateFiles();
    eZDebug::setLogrotateFiles($ini->variable('GeneralSettings', 'MaxLogrotateFiles'));
}
$varDir = eZSys::varDirectory();
$logDir = 'log';
$logName = 'webservices.log';
$fileName = $varDir . '/' . $logDir . '/' . $logName;
if (file_exists($fileName) && filesize($fileName) > $maxFileSize) {
    eZDebug::rotateLog($fileName);
}
if (isset($defaultrotate)) {
    eZDebug::setLogrotateFiles($defaultrotate);
}