A PHP log class for debuging
admin
2023-06-27 10:03:51
0

分享一个我自己用的在 WordPress 开发中用得到的一个调试日志类。

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 作为参数传给CoolWP_com_Log(),例如:

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

传不传参数的区别是日志文件的位置不同,如果不传参数,日志文件位于class-coolwp-debug-log.php所在目录下的debug目录下;如果传递了SOMEONE_THIS参数,那么,日志文件位于插件主目录下的debug目录下。日志文件的文件名称为debug_*******log。

日志条目默认采用北京时间。

相关内容

热门资讯

越来越多城市推行有奖发票 作者 | 第一财经 陈益刊今年中央财政投入100亿元在50个试点城市开展有奖发票试点,而未纳入试点范...
创明申请甲醇增程器功率控制方法... 国家知识产权局信息显示,绵阳创明智能电池有限责任公司、深圳市创明新能源股份有限公司申请一项名为“甲醇...
原创 红... 这一到618活动红米手机就杀疯了,本身高配低价的手机再降价,一下子吸引了很多用户入手,在京东平台内,...
一所突然“消失”的学校,一个心... 2120万元的赔偿请求,最终仅判赔2.53万元。2026年2月10日,一审判决送达后,武敏只用3天就...
新华社:人工智能和能源加速“双... 新华社发文表示,中国石油“昆仑”大模型深度解析复杂地质构造和油气藏特征,助力油气勘探开发提质增效;南...
俄军已控制七成城区,乌东重镇或... 据凤凰卫视报道,乌克兰武装部队在康斯坦丁诺夫卡市的处境正进一步恶化。根据几个隶属于乌军的社交媒体账号...
人民日报:AI一本正经胡说八道... 日前,江苏一顾客用AI软件预约餐厅,到店后却被告知无预约记录,怒写差评,商家称不支持AI订座,AI软...
燃气灶开关怎么维修 燃气灶是我们日常生活中经常使用的一种电器,而灶具的开关是其功能的核心部分之一,一旦发生故障,可能会影...
燃气灶看不见火花怎么办 如果燃气灶看不见火花,可能是因为以下原因:1. 火花塞头脏了:为了确保正常工作,燃气灶上的火花塞头需...
燃气灶靠墙吧台收纳方法 燃气灶靠墙吧台是很多小型家庭厨房常见的布局,因为这种布局既方便省空间,又能满足日常烹饪需要。但是由于...