ホームページ >バックエンド開発 >PHPチュートリアル >デバッグ用の PHP ログ クラス

デバッグ用の PHP ログ クラス

WBOY
WBOYオリジナル
2016-06-23 13:30:55963ブラウズ

WordPress 開発で使用するデバッグ ログ クラスを共有します。

<?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 をパラメータとして CoolWP_com_Log() に渡すことができます。例:

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

パラメータを渡すかどうかの違いは次のとおりです。パラメータが渡されない場合、ログ ファイルは、coolwp-debug-log.php が存在するディレクトリ内の class-debug ディレクトリに配置されます。SOMEONE_THIS パラメータが渡された場合、ログ ファイルは、プラグインのメイン ディレクトリのデバッグ ディレクトリにあります。ログファイルのファイル名はdebug_*******logです。

ログエントリはデフォルトでは北京時間で表示されます。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。