ホームページ > バックエンド開発 > PHPチュートリアル > 【PHP】WeChat公式コード ログデバッグ出力クラス、オブジェクト指向設計パターン!来て見てください、あなたは利益を得ます!

【PHP】WeChat公式コード ログデバッグ出力クラス、オブジェクト指向設計パターン!来て見てください、あなたは利益を得ます!

WBOY
リリース: 2016-06-20 12:32:44
オリジナル
1498 人が閲覧しました

//以下は日志

define("LOG_OUTPUT_LEVEL",1); //1-出力用すべて调试情報 1-DEBUG 2-INFO 4-WARN 8-ERROR


interface ILogHandler

{

public function write($msg);

}


クラス CLogFileHandler は ILogHandler を実装します

{

private $handle = null;

public function __construct($file = '')

{

$this->ハンドル = fopen($file,'a');

}

public function write($msg)

{

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

}

パブリック関数 __destruct()

{

fclose($this->handle);

}

}


クラス ログ

{

private $handler = null;

private $level = 15;

private static $instance = null;

プライベート関数 __construct(){}


プライベート関数 __clone(){}

パブリック静的関数Init($handler = null,$level = 15)

{

if(!self::$instance instanceof self)

{

self ::$instance = 新しい self();

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

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

}

return self::$instance;

}

プライベート関数 __setHandle($ handler){

$this->handler = $handler;

}

プライベート関数 __setLevel($level)

{

$this->level = $level;

}

パブリック静的関数 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);

}

パブリック静的関数 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);

}

プライベート関数 getLevelStr($level)

{

スイッチ ($level)

{

ケース 1:

return 'DEBUG';

ブレーク;

ケース 2:

「情報」を返します。

ブレーク;

ケース 4:

return 'WARN';

ブレーク;

ケース 8:

return 'ERROR';

Break;

デフォルト:

}

}

public static function getFilePath($debugInfo){

$stack = "[";

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

if(array_key_exists( "ファイル", $val)){

$stack .= "ファイル:" . strstr($val["file"],'cyb');

}

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

$stack 。 = ",行:" 。 $val["line"];

}

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

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

}

}

$stack .= "]";

return $stack;

}

保護関数 write($level,$msg)

{

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

{

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

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')); //实例化一文子夹

?>


ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート