PHP日志LOG類定義與用法示例
本文實例講述了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');
?>
運行程序,在當前目錄下生成test.txt文件內(nèi)容如下(這里是運行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基本語法入門教程》、《php字符串(string)用法總結(jié)》、《php+mysql數(shù)據(jù)庫操作入門教程》及《php常見數(shù)據(jù)庫操作技巧匯總》
希望本文所述對大家PHP程序設(shè)計有所幫助。
相關(guān)文章
php實現(xiàn)過濾字符串中的中文和數(shù)字實例
這篇文章主要介紹了php實現(xiàn)過濾字符串中的中文和數(shù)字的方法,實例分析了php操作中文和數(shù)字匹配的相關(guān)技巧,具有一定參考借鑒價值,需要的朋友可以參考下2015-07-07
PHP的命令行擴展Readline相關(guān)函數(shù)的使用
PHP 作為一個 Web 開發(fā)語言,相對來說,命令行程序并不是它的主戰(zhàn)場。所以很多年輕的 PHP 開發(fā)者可能連命令行腳本都沒有寫過,更別提交互式的命令操作了。而今天,我們帶來的這個擴展就是針對 PHP 的交互式命令行操作的2021-05-05
PHP7擴展開發(fā)之基于函數(shù)方式使用lib庫的方法詳解
這篇文章主要介紹了PHP7擴展開發(fā)之基于函數(shù)方式使用lib庫的方法,結(jié)合實例形式分析了PHP7中l(wèi)ib庫擴展的封裝與調(diào)用相關(guān)操作技巧,需要的朋友可以參考下2018-01-01
PHP實現(xiàn)數(shù)字補零功能的2個函數(shù)介紹
這篇文章主要介紹了PHP實現(xiàn)數(shù)字補零功能的2個函數(shù)介紹,需要的朋友可以參考下2014-05-05
WordPress的文章自動添加關(guān)鍵詞及關(guān)鍵詞的SEO優(yōu)化
這篇文章主要介紹了給WordPress的文章添加關(guān)鍵詞及關(guān)鍵詞的SEO優(yōu)化方法,突出關(guān)鍵詞在搜尋結(jié)果中的作用,需要的朋友可以參考下2016-03-03

