Heim > Backend-Entwicklung > PHP-Tutorial > 【PHP】微信官方代码Log调试输出类,面向对象设计模式!来看看,你会有收益!

【PHP】微信官方代码Log调试输出类,面向对象设计模式!来看看,你会有收益!

WBOY
Freigeben: 2016-06-20 12:32:44
Original
1491 Leute haben es durchsucht

//以下为日志

define("LOG_OUTPUT_LEVEL",1); //1-为输出所有调试信息    1-DEBUG   2-INFO   4-WARN   8-ERROR  


interface ILogHandler

{

public function write($msg);

}


class CLogFileHandler implements ILogHandler

{

private $handle = null;

public function __construct($file = '')

{

$this->handle = fopen($file,'a');

}

public function write($msg)

{

fwrite($this->handle, $msg, 4096);

}

public function __destruct()

{

fclose($this->handle);

}

}


class Log

{

private $handler = null;

private $level = 15;

private static $instance = null;

private function __construct(){}


private function __clone(){}

public static function Init($handler = null,$level = 15)

{

if(!self::$instance instanceof self)

{

self::$instance = new self();

self::$instance->__setHandle($handler);

self::$instance->__setLevel($level);

}

return self::$instance;

}

private function __setHandle($handler){

$this->handler = $handler;

}

private function __setLevel($level)

{

$this->level = $level;

}

public static function DEBUG($msg)

{

self::$instance->write(1,self::getFilePath(debug_backtrace()).$msg);

}

public static function WARN($msg)

{

self::$instance->write(4," ".self::getFilePath(debug_backtrace()).$msg);

}

public static function ERROR($msg)

{


self::$instance->write(8,self::getFilePath(debug_backtrace()).$msg);


}

public static function INFO($msg)

{

self::$instance->write(2," ".self::getFilePath(debug_backtrace()).$msg);

}

private function getLevelStr($level)

{

switch ($level)

{

case 1:

return 'DEBUG';

break;

case 2:

return 'INFO';

break;

case 4:

return 'WARN';

break;

case 8:

return 'ERROR';

break;

default:

}

}

public static function getFilePath($debugInfo){

$stack = "[";

foreach($debugInfo as $key => $val){

if(array_key_exists("file", $val)){

$stack .= "file:" . strstr($val["file"],'\cyb');

}

if(array_key_exists("line", $val)){

$stack .= ",line:" . $val["line"];

}

if(array_key_exists("function", $val)){

$stack .= ",function:" . $val["function"];

}

}

$stack .= "]";

return $stack;

}

protected function write($level,$msg)

{

if(($level & $this->level) == $level )

{

$msg = '['.date('Y-m-d H:i:s').']['.$this->getLevelStr($level).'] '.$msg."\r\n";

if($level>=LOG_OUTPUT_LEVEL){

$this->handler->write($msg);

}

}

}

}


2.php


    include('log.php');

    $FileName=$_SERVER['DOCUMENT_ROOT']."/log/".date('Ym',time()); //通过时间来做日志文件夹

    if(!file_exists($FileName)){

        mkdir($FileName,0777);//如果没有该文件夹,创建一个

    }

    Log::Init(new CLogFileHandler($FileName."/".date('Y-m-d',time()).'.txt')); //实例化一个文件夹

?>


Quelle:php.cn
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage