Heim Backend-Entwicklung PHP-Tutorial A PHP log class for debuging

A PHP log class for debuging

Jun 23, 2016 pm 01:30 PM

分享一个我自己用的在 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);

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

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

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

PHP-Tutorial
1596
276
Objektrelationszuordnung (ORM) Leistungsstimmen in PHP Objektrelationszuordnung (ORM) Leistungsstimmen in PHP Jul 29, 2025 am 05:00 AM

Vermeiden Sie N 1 Abfrageprobleme, reduzieren Sie die Anzahl der Datenbankabfragen, indem Sie die zugehörigen Daten im Voraus laden. 2. Wählen Sie nur die erforderlichen Felder aus, um das Laden vollständiger Entitäten zu vermeiden, um Speicher und Bandbreite zu sparen. 3.. Verwenden Sie Cache-Strategien vernünftigerweise, z. 4. Optimieren Sie den Lebenszyklus der Entität und rufen Sie Clear () regelmäßig an, um den Speicher freizugeben, um den Speicherüberlauf zu verhindern. 5. Stellen Sie sicher, dass der Datenbankindex die generierten SQL -Anweisungen existiert und analysiert, um ineffiziente Abfragen zu vermeiden. 6. Deaktivieren Sie die automatische Änderungsverfolgung in Szenarien, in denen Änderungen nicht erforderlich sind, und verwenden Sie Arrays oder Leichtgewichtsmodi, um die Leistung zu verbessern. Die korrekte Verwendung von ORM erfordert die Kombination der SQL -Überwachung, -gespeicherung, der Stapelverarbeitung und der geeigneten Optimierung, um die Anwendungsleistung zu gewährleisten und gleichzeitig die Entwicklungseffizienz beizubehalten.

Aufbau unveränderlicher Objekte in PHP mit Readonly -Eigenschaften Aufbau unveränderlicher Objekte in PHP mit Readonly -Eigenschaften Jul 30, 2025 am 05:40 AM

ReadOmpropertiesinphp8.2canonlyBeSignedoncinstructororatDeklarationandCannotBemodifiedAfterward, durchsetzungsvermutbarkeitatheluagelevel.2.ToachedevimmiMmutability, WrapMutabletypesLikearrayObjecustomimmutablecollections

Handhabung von Kryptowährungsberechnungen: Warum BCMath für PHP wesentlich ist Handhabung von Kryptowährungsberechnungen: Warum BCMath für PHP wesentlich ist Aug 01, 2025 am 07:48 AM

BcmathisessentialForAcurateCryptocurrencyCalculationsinphpecausefloating-PointarithmetikintroducesunacceptableroundingErrors.1

Zeichenfolgen als Wertobjekte: Ein moderner Ansatz für domänenspezifische Zeichenfolgetypen Zeichenfolgen als Wertobjekte: Ein moderner Ansatz für domänenspezifische Zeichenfolgetypen Aug 01, 2025 am 07:48 AM

RAWStringSindomain-getriebene Anwendungen schützen mithilfe von WithValueObjectStopreventbugsandimProvetypesafety; 1. UNGENSRAWSTORSLEADSTOPRIMITIONOBSession, wobei dieInterchangeablestringtypeScancaussuBlebugslikaRgumentswapping;

Jul 29, 2025 am 05:02 AM

PhpevaluatesConstantExpressionsatcompiletimetoimProveperformanceanDeAneArlyRrordetion.1.ConstantExpressionenValuationMeansCutingValuesDuringCompilationWenAlloperandsare -Bekanntmachungconstantslikeliterale, ClassConstants, oder prägredefinierte Constants.2.2.

Verwenden Sie PHP für Datenkratzen und Webautomation Verwenden Sie PHP für Datenkratzen und Webautomation Aug 01, 2025 am 07:45 AM

UseGuzzleForrobUtttprequestswithheaderStimeouts.2.ParsehtmleffictionLyWithSymfonydomcrawleruSusectors.3.HandlejavaScript-HeavysitesByintegratingPuppeteerviaPexec () torenderpages.4.respactroboBoBoBoBoThoter- und addDelays, addDelays, rotdelayents, rotateuseragents und rotateuseragents und ushEdelays, usaDelays, rot

Navigieren durch die Fallstricke der Schwimmpunkt-Ungenauigkeit in PHP Navigieren durch die Fallstricke der Schwimmpunkt-Ungenauigkeit in PHP Jul 29, 2025 am 05:01 AM

Schwimmpunktzahlen sind ungenau, ist ein häufiges Problem in PHP. Die Antwort ist, dass es das IEEE754-Doppelprezisionsformat verwendet, wodurch Dezimaldezimalstellen nicht genau dargestellt werden können. Zahlen wie 1,0.1 oder 0,2 sind in binärer Dezimalstellen in unendlichen Schleifen, und der Computer muss sie abschneiden, um Fehler zu verursachen. 2. Beim Vergleich der schwimmenden Punktzahlen sollten Sie Toleranz anstelle von == verwenden, wie z. B. ABS ($ A- $ B)

Perpacking Performance: Die Wahrheit über PHP Switch vs. If-ELSE Perpacking Performance: Die Wahrheit über PHP Switch vs. If-ELSE Aug 02, 2025 pm 04:34 PM

SwitchCanBeLightLyFasterThanif-elsewhencomparingasinglevariableAlAnstmultiplesCalarvalues, insbesondere mit ManyCaseSorcontuitInTeGersDuetopossiblejumptableoptableTimization;

See all articles