Search code examples
phploggingpsr-0

How to change PSR log files as only one per day


I've used PSR logger to get logs. But it will create just one file for all dates. I need to get separate log files to each date. How to do that?

    require_once '../../logger/vendor/autoload.php';
    require_once '../../logger/Psr/Log/Logger.php';
    use Katzgrau\KLogger\Logger;
    use Psr\Log\LogLevel;


    $logPath = '/var/www/html/logs';
    $logger = new Logger($logPath, LogLevel::DEBUG, array ( 'filename' => 'driver_api' , 'extension' => 'log' ));
    $logger->log( $level,  $message , $context);

`


Solution

  • use log rotator

    protected function log_rotate($logpath, $filename, $extention){
        $logfilename = $logpath.'/'.$filename.'.'.$extention; //not needed when included
        $logfilestokeep = 15;
        $fileDate = '';
    
    
    
        if (file_exists($logfilename)) {
            if (date("Y-m-d", filemtime($logfilename)) !== date('Y-m-d')) {
                $fileDate = date("Y-m-d", filemtime($logfilename));
                $newName = $logpath .'/'.$filename. "_" . $fileDate.'.'.$extention;
    
                if (file_exists($logfilename)) {
                    rename($logfilename, $newName);
                }
    
            }
        }
    }