溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

A PHP log class for debuging

發(fā)布時間:2020-07-21 17:27:39 來源:網(wǎng)絡 閱讀:505 作者:suifengtec 欄目:web開發(fā)

分享一個我自己用的在 WordPress 開發(fā)中用得到的一個調(diào)試日志類。

<?php
/**
 * @author: suifengtec coolwp.com
 * @date:   2013-02-03 09:55:55
 * @last Modified by:   suifengtec coolwp.com
 * @last Modified time: 2015-07-12 18:40:02
 */

if(function_exists('add_action')){
    defined('ABSPATH') or exit;
}

if(!class_exists('CoolWP_com_Log')){

    final class CoolWP_com_Log{

        private $dir = null;
        private $debug_file_name = null;
        private $f_path = null;

        public function __clone() {
            _doing_it_wrong( __FUNCTION__, 'Cheatin&#8217; huh?', '0.9.0' );
        }
        public function __wakeup() {
            _doing_it_wrong( __FUNCTION__, 'Cheatin&#8217; huh?', '0.9.0' );
        }

        public function __construct($main_file=''){
            $main_file = (''==$main_file)?__FILE__:$main_file;
            $this->dir = dirname($main_file).DIRECTORY_SEPARATOR.'debug'.DIRECTORY_SEPARATOR;
            $file_name = 'debug_'.md5($main_file).'.log';
            $this->debug_file_name = (function_exists('apply_filters'))?apply_filters('cwp_debug_log_file_name',$file_name).'.log':$file_name.'.log';
            $this->f_path = $this->dir.$this->debug_file_name;
            $this->check_log_file();

         }
        /**
         * adding log item
         * @param string $text : adding content
         */
        public function  add($text) {

            date_default_timezone_set('Asia/Shanghai');
            if(is_array($text)||is_obeject($text)){
                $text = json_encode($text);
            }
            $fp = fopen( $this->f_path,"a");
            flock($fp, LOCK_EX) ;
            fwrite($fp,"".date("Y-m-d H:i:s",time())."\n".$text."\n\n");
            flock($fp, LOCK_UN);
            fclose($fp);
            //return true;
            //
        }

        /**
         * checking the log file and path.
         * @return null
         */
        private function check_log_file(){

            $is_dir = is_dir($this->dir);
            $is_file = file_exists($this->f_path);
            if($is_dir && $is_file) return;
            if(!$is_dir||!$is_file){
                if(!$is_dir){
                    $md = mkdir($this->dir,0777,true);
                }
                if(!$is_file){
                    $fp = fopen( $this->f_path,"a");  
                    fclose($fp); 
                }
            }

        }
    }/*//CLASS*/
}
/*ALL DONE.*/
?>

以 WordPress 插件為例的用例:
在插件主文件的適當位置加入(假如上述代碼放置在class-coolwp-debug-log.php文件中):

$this->is_debug = true;

if($this->is_debug){
    require_once( plugin_dir_path(__FILE__).'classes/class-coolwp-debug-log.php');

    $this->Log = new CoolWP_com_Log();
}

如果在插件主文件中將__FILE__定義為常量 SOMEONE_THIS,那么,可以將SOMEONE_THIS 作為參數(shù)傳給CoolWP_com_Log(),例如:

$this->Log = new CoolWP_com_Log(SOMEONE_THIS);

傳不傳參數(shù)的區(qū)別是日志文件的位置不同,如果不傳參數(shù),日志文件位于class-coolwp-debug-log.php所在目錄下的debug目錄下;如果傳遞了SOMEONE_THIS參數(shù),那么,日志文件位于插件主目錄下的debug目錄下。日志文件的文件名稱為debug_*******log。

日志條目默認采用北京時間。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。

AI