一个日志类的编写

日志类在一个项目当中是相当重要的,在后边项目执行的过程当中可以将错误日志记录起来方便日常的维护与分析:

class log {
    //用一个常量 表示日志文件的后缀名
    const LOGFILE = 'log';
}

接下来会逐渐扩展其中的函数

//写日志的函数 传递日志信息 拼接换行字符 获得日志文件 打开文件 模式为 追加内容 将内容写入 关闭 文件流
    public static function write($count){
        //追加换行符 每写一行换一行
        $count.="
";
        //判断大小

        $log = self::isBak();
        //追加内容模式
        $fh = fopen($log, 'a+');
        //写入内容
        fwrite($fh, $count);
        //关闭文件
        fclose($fh);

    }
//备份日志 这个函数用于将当前的的日志文件保存起来 mt_rand
    public static function Bak(){
        //把原来的文件改名 再存储起来
        //改成 年月日 --bak这种形式
        $log = ROOT.'data/log/curr.'.self::LOGFILE;
        $bak = ROOT.'data/log/'.date('ymd').mt_rand(10000,99999).'.bak';
        
        return rename($log, $bak); 
    }
//这里先判断是否存在该文件 如果没有则创建文件 如果有先清理文件缓存  获取文件大小 如果超过1M则 将当前文件保存 如果保存成功则返回新创建的文件 否则直接返回当前的文件
    public static function isBak(){
        //先判断是否存在
        $log = ROOT.'data/log/curr.'.self::LOGFILE;
        //如果文件不存在就创建文件
        if(!file_exists($log)){
            //创建文件
            touch($log);
            return $log;
        }
        //清除文件缓存
        clearstatcache(true,$log);
        $size = filesize($log);
        //大于1M
        if($size<=1024*1024){
            return $log;
        }
        //到这一行说明大于1M 用新的文件存储
        if(!self::Bak()){
            return $log;
        }else{
            //备份成功 创建文件
            touch($log);
            return $log;

        }
    }

关键字:touch创建文件 fopen打开文件流  fwrite写入文件 filesize获得文件大小  其实还是挺简单的

原文地址:https://www.cnblogs.com/webcyh/p/11312450.html