php系统日志切割的实例

作者:袖梨 2022-06-24

我习惯设置的日志路径是这样
/home/www/logs/域名.log
比如
/home/www/logs/www.yundaiwei.com.log

为了方便管理,日志需要按天保存在一个文件中,并且保留指定天数的日志,超过时间的就删除。

分享一下脚本

#!/usr/bin/php
$logdir = '/home/www/logs/';
// 保留天数含当天
$log_save_day = 7;

$files = glob("{$logdir}/*");

foreach($files as $path){
    $filename = basename($path);
    preg_match("/(d{8}).log/", $filename, $preg);

    $date = @$preg[1];
   
    if(empty($date)){
        // 当天日志,更改文件名
        $newpath = $logdir . '/' . str_replace('log', date('Ymd',strtotime("-1 day")).'.log', $filename);
        rename($path, $newpath);
        echo "$path >>> $newpathn";
    }else{
        // 超过保留天数,删除
        if(time()+10 - strtotime($date) > 3600*24*$log_save_day){
            unlink($path);
            echo "$path delete!n";
        }
    }
}

shell_exec('/etc/init.d/nginx reload &> /dev/null');

相关文章

精彩推荐