PHP日志LOG類定義與用法示例
本文實(shí)例講述了PHP日志LOG類定義與用法。分享給大家供大家參考,具體如下:
<?php /** * PHP log 類 */ class Config{ public static function getConfig (){ return array( 'LOG_FILE'=>'test.txt', 'LOG_LEVEL'=>75 //INFO ); } } class Log{ private $LogFile; private $logLevel; const DEBUG = 100; const INFO = 75; const NOTICE = 50; const WARNING =25; const ERROR = 10; const CRITICAL = 5; private function __construct(){ $cfg = Config::getConfig(); $this->logLevel = isset($cfg['LOG_LEVEL']) ? $cfg['LOG_LEVEL']:LOG::INFO; if(!isset($cfg['LOG_FILE']) && strlen($cfg['LOG_FILE'])){ throw new Exception('can\'t set file to empty'); } $this->LogFile = @fopen($cfg['LOG_FILE'],'a+'); if(!is_resource($this->LogFile)){ throw new Exception('invalid file Stream'); } } public static function getInstance(){ static $obj; if(!isset($obj)){ $obj = new Log(); } return $obj; } public function LogMessage($msg, $logLevel = Log::INFO,$module = null){ if($logLevel > $this->logLevel){ return ; } date_default_timezone_set('Asia/shanghai'); $time = strftime('%x %X',time()); $msg = str_replace("\t",'',$msg); $msg = str_replace("\n",'',$msg); $strLogLevel = $this->levelToString($logLevel); if(isset($module)){ $module = str_replace(array("\n","\t"),array("",""),$module); } $logLine = "$time\t$msg\t$strLogLevel\t$module\r\n"; fwrite($this->LogFile,$logLine); } public function levelToString($logLevel){ $ret = '[unknow]'; switch ($logLevel){ case LOG::DEBUG: $ret = 'LOG::DEBUG'; break; case LOG::INFO: $ret = 'LOG::INFO'; break; case LOG::NOTICE: $ret = 'LOG::NOTICE'; break; case LOG::WARNING: $ret = 'LOG::WARNING'; break; case LOG::ERROR: $ret = 'LOG::ERROR'; break; case LOG::CRITICAL: $ret = 'LOG::CRITICAL'; break; } return $ret; } } $logIns = LOG::getInstance(); //print_r($logIns); $logIns->logMessage("test",LOG::INFO,'myTest'); ?>
運(yùn)行程序,在當(dāng)前目錄下生成test.txt文件內(nèi)容如下(這里是運(yùn)行3次的結(jié)果):
09/06/18 14:56:20 test LOG::INFO myTest
09/06/18 14:56:21 test LOG::INFO myTest
09/06/18 14:56:22 test LOG::INFO myTest
更多關(guān)于PHP相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《PHP日志操作技巧總結(jié)》、《php文件操作總結(jié)》、《PHP數(shù)組(Array)操作技巧大全》、《PHP基本語(yǔ)法入門教程》、《php字符串(string)用法總結(jié)》、《php+mysql數(shù)據(jù)庫(kù)操作入門教程》及《php常見(jiàn)數(shù)據(jù)庫(kù)操作技巧匯總》
希望本文所述對(duì)大家PHP程序設(shè)計(jì)有所幫助。
相關(guān)文章
php實(shí)現(xiàn)過(guò)濾字符串中的中文和數(shù)字實(shí)例
這篇文章主要介紹了php實(shí)現(xiàn)過(guò)濾字符串中的中文和數(shù)字的方法,實(shí)例分析了php操作中文和數(shù)字匹配的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-07-07php實(shí)時(shí)倒計(jì)時(shí)功能實(shí)現(xiàn)方法詳解
這篇文章主要介紹了php實(shí)時(shí)倒計(jì)時(shí)功能實(shí)現(xiàn)方法,結(jié)合具體實(shí)例形式分析了php結(jié)合前臺(tái)JS的時(shí)間戳操作實(shí)現(xiàn)倒計(jì)時(shí)功能的具體步驟與相關(guān)操作技巧,需要的朋友可以參考下2017-02-02PHP的命令行擴(kuò)展Readline相關(guān)函數(shù)的使用
PHP 作為一個(gè) Web 開(kāi)發(fā)語(yǔ)言,相對(duì)來(lái)說(shuō),命令行程序并不是它的主戰(zhàn)場(chǎng)。所以很多年輕的 PHP 開(kāi)發(fā)者可能連命令行腳本都沒(méi)有寫(xiě)過(guò),更別提交互式的命令操作了。而今天,我們帶來(lái)的這個(gè)擴(kuò)展就是針對(duì) PHP 的交互式命令行操作的2021-05-05PHP 刪除一個(gè)目錄及目錄下的所有文件的函數(shù)代碼
PHP刪除一個(gè)目錄及目錄下的文件代碼,即刪除目錄或刪除文件。2010-05-05PHP7擴(kuò)展開(kāi)發(fā)之基于函數(shù)方式使用lib庫(kù)的方法詳解
這篇文章主要介紹了PHP7擴(kuò)展開(kāi)發(fā)之基于函數(shù)方式使用lib庫(kù)的方法,結(jié)合實(shí)例形式分析了PHP7中l(wèi)ib庫(kù)擴(kuò)展的封裝與調(diào)用相關(guān)操作技巧,需要的朋友可以參考下2018-01-01PHP實(shí)現(xiàn)數(shù)字補(bǔ)零功能的2個(gè)函數(shù)介紹
這篇文章主要介紹了PHP實(shí)現(xiàn)數(shù)字補(bǔ)零功能的2個(gè)函數(shù)介紹,需要的朋友可以參考下2014-05-05C#靜態(tài)方法與非靜態(tài)方法實(shí)例分析
這篇文章主要介紹了C#靜態(tài)方法與非靜態(tài)方法,重點(diǎn)講述了靜態(tài)方法的實(shí)際應(yīng)用,有助于進(jìn)一步加深對(duì)C#程序設(shè)計(jì)的理解,需要的朋友可以參考下2014-09-09WordPress的文章自動(dòng)添加關(guān)鍵詞及關(guān)鍵詞的SEO優(yōu)化
這篇文章主要介紹了給WordPress的文章添加關(guān)鍵詞及關(guān)鍵詞的SEO優(yōu)化方法,突出關(guān)鍵詞在搜尋結(jié)果中的作用,需要的朋友可以參考下2016-03-03