PHP常用工具类之简单写日志类

日志作为面向bug编程的我们来说,是必不可少的一部分,也是作为项目是否良好运行的体检表,总的来说网站的日志主要分为两大类即操作日志与运行日志。

操作日志:主要记录用户在客户端的每一个动作及每个动作执行之后的影响(请求数据,返回结果,异常信息等等)

运行日志:主要记录服务器的运行状态。

本着练习的原则,就写了一个简单的写日志类。写日志其实原理挺简单的,就是将数据写入文本文件的过程。

class Log{
    const LOGFILE = "curr.log";
    //设置日志存储在根目录下的路径,更好的方式是从配置文件中读取
    private static $logPath = "H:/test/log/";

    //写日志
    public static function write($content){
        //判断是否需要备份
        $log = self::isSize();
        $author = isset($_SESSION['username'])?$_SESSION['username']:'null';
        //写入前的日志格式
        $template = '['.date('Y-m-d H:i:s').'] ';
        $template .= '['.$_SERVER['SERVER_NAME'].'] ';
        $template .= '['.$author.'] ';
       // $template .= '['.__CLASS__ .'=>'.__METHOD__ . '] ';
        $template .= PHP_EOL;

        //先写入日志格式
        $fh = fopen($log,'ab');
        fwrite($fh,$template); 

        //如果写入的内容是数组
        if(is_array($content)){
            file_put_contents($log,var_export($content,true),FILE_APPEND);
            $content = "";
        }
        //每写完一次则换行
        //$content .= "\r\n";
        $content .= PHP_EOL;
        //追加日志内容            
        fwrite($fh,$content);
        fclose($fh);
    }

    //备份日志
    public static function bak(){
        //改名并且另外存储
        $bak = self::$logPath.date('ymd').mt_rand(10000,99999).'bak.log';
        $log = self::$logPath.self::LOGFILE;
        return rename($log,$bak);

    } 

    //判断日志大小
    public static function isSize(){
        $log = self::$logPath.self::LOGFILE;
        //echo $log;exit;
        //如果文件不存在则创建之
        if(!file_exists($log)){
            touch($log);
            return $log;
        }

        //如果文件存在则读取大小,小于1m继续写,大于1则备份
        //q清除缓存重新获取文件大小,影响:写入较慢
        // clearstatcache(true,$log);
        $fsize = filesize($log);
        if($fsize <= 1024 * 1024){
            return $log;
        }

        //备份
        if(!self::bak()){
            return $log;
        }else{
            touch($log);
            return $log;
        }

    }

}

调用示例:

    include('Log.class.php');
    $str = "我曾踏足山巅,也曾跌入低谷二者使我受益良多!";

    log::write($str);

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值