CLogger
鍖 | system.logging |
---|---|
缁ф壙 | class CLogger » CComponent |
婧愯嚜 | 1.0 |
鐗堟湰 | $Id: CLogger.php 3515 2011-12-28 12:29:24Z mdomba $ |
婧愮爜 | framework/logging/CLogger.php |
CLogger鍙栧洖甯︽湁涓嶅悓杩囨护鍣ㄦ潯浠剁殑鏃ュ織锛 鍖呮嫭鏃ュ織绛夌骇鍜屾棩蹇楃被鍒
鍏叡灞炴
灞炴 | 绫诲瀷 | 鎻忚堪 | 瀹氫箟鍦 |
---|---|---|---|
autoDump | boolean | 杩欎釜灞炴у皢琚綔涓哄弬鏁颁紶閫掑埌flush()褰撳畠鍦log()涓璋冪敤鏃讹紝 鐢变簬autoFlush宸茬粡瀹屾垚闄愬埗銆 榛樿鏃讹紝杩欎釜灞炴т负false锛屾剰鍛崇潃宸茬粡杩囨护鐨勪俊鎭粛鐒朵繚瀛樺湪鍐呭湪涓紝 姣忔flush()鏃ュ織璺敱璋冪敤涔嬪悗銆 濡傛灉涓簍rue锛屽凡杩囨护鐨勪俊鎭淇濆瓨鍦ㄥ疄闄呯殑濯掍粙涓紝鍦ㄦ瘡娆log()涓殑flush()琚皟鐢ㄤ箣鍚庛 | CLogger |
autoFlush | integer | 鍦ㄥ畠浠鍒锋柊鍒扮洰褰曞墠澶氬皯淇℃伅搴旇琚褰曘 榛樿鍒10,000, 鎰忓懗鐫姣10,000鏉′俊鎭紝杩欎釜flush鏂规硶鑷姩琚彂璧蜂竴娆′俊鎭 濡傛灉涓0锛屽畠鎰忓懗鐫淇℃伅涓嶄細琚嚜鍔ㄥ埛鏂般 | CLogger |
executionTime | float | 杩斿洖鏈嶅姟褰撳墠璇锋眰鐨勬绘椂闂淬 | CLogger |
logs | array | 鍙栧洖鏃ュ織淇℃伅銆 | CLogger |
memoryUsage | integer | 杩斿洖褰撳墠搴旂敤绋嬪簭鐨勫唴瀛樹娇鐢ㄩ噺銆 | CLogger |
profilingResults | array | 杩斿洖鍒嗘瀽缁撴灉銆 | CLogger |
鍏叡鏂规硶
鏂规硶 | 鎻忚堪 | 瀹氫箟鍦 |
---|---|---|
__call() | 濡傛灉绫讳腑娌℃湁璋冪殑鏂规硶鍚嶏紝鍒欒皟鐢ㄨ繖涓柟娉曘 | CComponent |
__get() | 杩斿洖涓涓睘鎬у笺佷竴涓簨浠跺鐞嗙▼搴忓垪琛ㄦ垨涓涓涓哄悕绉般 | CComponent |
__isset() | 妫鏌ヤ竴涓睘鎬ф槸鍚︿负null銆 | CComponent |
__set() | 璁剧疆涓涓粍浠剁殑灞炴у笺 | CComponent |
__unset() | 璁剧疆涓涓粍浠剁殑灞炴т负null銆 | CComponent |
asa() | 杩斿洖杩欎釜鍚嶅瓧鐨勮涓哄璞° | CComponent |
attachBehavior() | 闄勫姞涓涓涓哄埌缁勪欢銆 | CComponent |
attachBehaviors() | 闄勫姞涓涓涓哄垪琛ㄥ埌缁勪欢銆 | CComponent |
attachEventHandler() | 涓轰簨浠堕檮鍔犱竴涓簨浠跺鐞嗙▼搴忋 | CComponent |
canGetProperty() | 纭畾灞炴ф槸鍚﹀彲璇汇 | CComponent |
canSetProperty() | 纭畾灞炴ф槸鍚﹀彲鍐欍 | CComponent |
detachBehavior() | 浠庣粍浠朵腑鍒嗙涓涓涓恒 | CComponent |
detachBehaviors() | 浠庣粍浠朵腑鍒嗙鎵鏈夎涓恒 | CComponent |
detachEventHandler() | 鍒嗙涓涓瓨鍦ㄧ殑浜嬩欢澶勭悊绋嬪簭銆 | CComponent |
disableBehavior() | 绂佺敤涓涓檮鍔犺涓恒 | CComponent |
disableBehaviors() | 绂佺敤缁勪欢闄勫姞鐨勬墍鏈夎涓恒 | CComponent |
enableBehavior() | 鍚敤涓涓檮鍔犺涓恒 | CComponent |
enableBehaviors() | 鍚敤缁勪欢闄勫姞鐨勬墍鏈夎涓恒 | CComponent |
evaluateExpression() | 璁$畻涓涓狿HP琛ㄨ揪寮忥紝鎴栨牴鎹粍浠朵笂涓嬫枃鎵ц鍥炶皟銆 | CComponent |
flush() | 浠庡唴瀛樹腑绉婚櫎鎵鏈夎褰曠殑淇℃伅銆 | CLogger |
getEventHandlers() | 杩斿洖涓涓簨浠剁殑闄勫姞澶勭悊绋嬪簭鍒楄〃銆 | CComponent |
getExecutionTime() | 杩斿洖鏈嶅姟褰撳墠璇锋眰鐨勬绘椂闂淬 | CLogger |
getLogs() | 鍙栧洖鏃ュ織淇℃伅銆 | CLogger |
getMemoryUsage() | 杩斿洖褰撳墠搴旂敤绋嬪簭鐨勫唴瀛樹娇鐢ㄩ噺銆 | CLogger |
getProfilingResults() | 杩斿洖鍒嗘瀽缁撴灉銆 | CLogger |
hasEvent() | 纭畾涓涓簨浠舵槸鍚﹀畾涔夈 | CComponent |
hasEventHandler() | 妫鏌ヤ簨浠舵槸鍚︽湁闄勫姞鐨勫鐞嗙▼搴忋 | CComponent |
hasProperty() | 纭畾灞炴ф槸鍚﹁瀹氫箟銆 | CComponent |
log() | 璁板綍涓鏉′俊鎭 | CLogger |
onFlush() | 鍙戣捣涓涓 onFlush 浜嬩欢銆 |
CLogger |
raiseEvent() | 鍙戣捣涓涓簨浠躲 | CComponent |
灞炴ц缁
杩欎釜灞炴у皢琚綔涓哄弬鏁颁紶閫掑埌flush()褰撳畠鍦log()涓璋冪敤鏃讹紝 鐢变簬autoFlush宸茬粡瀹屾垚闄愬埗銆 榛樿鏃讹紝杩欎釜灞炴т负false锛屾剰鍛崇潃宸茬粡杩囨护鐨勪俊鎭粛鐒朵繚瀛樺湪鍐呭湪涓紝 姣忔flush()鏃ュ織璺敱璋冪敤涔嬪悗銆 濡傛灉涓簍rue锛屽凡杩囨护鐨勪俊鎭淇濆瓨鍦ㄥ疄闄呯殑濯掍粙涓紝鍦ㄦ瘡娆log()涓殑flush()琚皟鐢ㄤ箣鍚庛
鍦ㄥ畠浠鍒锋柊鍒扮洰褰曞墠澶氬皯淇℃伅搴旇琚褰曘 榛樿鍒10,000, 鎰忓懗鐫姣10,000鏉′俊鎭紝杩欎釜flush鏂规硶鑷姩琚彂璧蜂竴娆′俊鎭 濡傛灉涓0锛屽畠鎰忓懗鐫淇℃伅涓嶄細琚嚜鍔ㄥ埛鏂般
杩斿洖鏈嶅姟褰撳墠璇锋眰鐨勬绘椂闂淬 杩欎釜鏂规硶璁$畻鐜板湪鍜屽父閲廦II_BEGIN_TIME瀹氫箟鐨勬椂闂存埑涔嬮棿鐨勪笉鍚 涓轰簡浼扮畻鎵ц鏃堕棿鏇村姞鍑嗙‘銆 姝ゅ父閲忓簲璇ュ敖鍙兘鏃╃殑瀹氫箟(鏈濂藉湪杩涘叆鑴氭湰鏃跺紑濮嬨)
鍙栧洖鏃ュ織淇℃伅銆
娑堟伅鍙兘浼氳鏃ュ織绛夌骇and/or绫诲埆杩囨护銆
涓涓瓑绾ц繃婊ゅ櫒閫氳繃鐢ㄩ楀彿鎴栫┖鏍煎垎闅旂殑绛夌骇鍒楄〃鎸囧畾(渚嬪'trace, error')銆
涓涓被鍒繃婊ゅ櫒绫讳技浜庣瓑绾ц繃婊ゅ櫒 (渚嬪'system, system.web')銆
涓涓笉鍚屾槸鍦ㄧ瓑绾ц繃婊ゅ櫒涓綘鑳戒娇鐢ㄧ被浼'system.*'鐨勬ā寮忓幓鎸囩ず鎵鏈変互 'system'寮澶寸殑绫诲埆銆
濡傛灉浣犳病鏈夋寚瀹氱瓑绾ц繃婊ゅ櫒锛屽畠灏嗗彇鍥炴墍鏈夌瓑绾х殑鏃ュ織銆
杩欏悓鏍烽傜敤浜庣被鍒繃婊ゅ櫒銆
绛夌骇杩囨护鍣ㄥ拰绫诲埆杩囨护鍣ㄦ槸鍙互缁勫悎鐨勩
渚嬪锛屼粎浠呭悓鏃舵弧瓒充袱涓潯浠朵俊鎭墠杩斿洖銆
杩斿洖褰撳墠搴旂敤绋嬪簭鐨勫唴瀛樹娇鐢ㄩ噺銆 杩欎釜鏂规硶渚濋潬PHP鐨勫嚱鏁癿emory_get_usage()銆 濡傛灉瀹冧笉鍙敤,璇ユ柟娉曞皢灏濊瘯浣跨敤鎿嶄綔绯荤粺绋嬪簭鍘荤‘瀹氬唴瀛樼殑浣跨敤 濡傛灉鍐呭瓨浣跨敤閲忎粛涓嶈兘纭畾灏嗚繑鍥0銆
杩斿洖鍒嗘瀽缁撴灉銆
姝ょ粨鏋滃彲鑳借浠ょ墝and/or绫诲埆杩囨护銆
濡傛灉娌℃湁鎸囧畾杩囨护鍣,杩斿洖缁撴灉灏嗘槸姣忎釜鍏冪礌閮芥槸鏁扮粍鐨勬暟缁($token,$category,$time)銆
濡傛灉鎸囧畾浜嗕竴涓繃婊ゅ櫒,缁撴灉灏嗘槸涓涓椂闂存暟缁勩
鏂规硶璇︾粏
public void flush(boolean $dumpLogs=false)
| ||
$dumpLogs | boolean | 鏄惁澶勭悊姝ゆ棩蹇 |
public function flush($dumpLogs=false)
{
$this->onFlush(new CEvent($this, array('dumpLogs'=>$dumpLogs)));
$this->_logs=array();
$this->_logCount=0;
}
浠庡唴瀛樹腑绉婚櫎鎵鏈夎褰曠殑淇℃伅銆 杩欎釜鏂规硶灏嗗紩璧蜂竴涓 onFlush 浜嬩欢銆 闄勫姞浜嬩欢澶勭悊绋嬪簭鑳藉湪瀹冧滑琚Щ闄ゅ墠澶勭悊姝ゆ棩蹇椾俊鎭
public float getExecutionTime()
| ||
{return} | float | 鏈嶅姟褰撳墠璇锋眰鐨勬绘椂闂淬 |
public function getExecutionTime()
{
return microtime(true)-YII_BEGIN_TIME;
}
杩斿洖鏈嶅姟褰撳墠璇锋眰鐨勬绘椂闂淬 杩欎釜鏂规硶璁$畻鐜板湪鍜屽父閲廦II_BEGIN_TIME瀹氫箟鐨勬椂闂存埑涔嬮棿鐨勪笉鍚 涓轰簡浼扮畻鎵ц鏃堕棿鏇村姞鍑嗙‘銆 姝ゅ父閲忓簲璇ュ敖鍙兘鏃╃殑瀹氫箟(鏈濂藉湪杩涘叆鑴氭湰鏃跺紑濮嬨)
public array getLogs(string $levels='', string $categories='')
| ||
$levels | string | 绛夌骇杩囨护鍣 |
$categories | string | 绫诲埆杩囨护鍣 |
{return} | array | 淇℃伅鍒楄〃銆 姣忎竴涓暟缁勫厓绱犱唬琛ㄤ竴涓笅闈㈢粨鏋勭殑淇℃伅 array( [0] => message (string) [1] => level (string) [2] => category (string) [3] => timestamp (float, 閫氳繃 microtime(true) 鍙栧緱); |
public function getLogs($levels='',$categories='')
{
$this->_levels=preg_split('/[\s,]+/',strtolower($levels),-1,PREG_SPLIT_NO_EMPTY);
$this->_categories=preg_split('/[\s,]+/',strtolower($categories),-1,PREG_SPLIT_NO_EMPTY);
if(empty($levels) && empty($categories))
return $this->_logs;
else if(empty($levels))
return array_values(array_filter(array_filter($this->_logs,array($this,'filterByCategory'))));
else if(empty($categories))
return array_values(array_filter(array_filter($this->_logs,array($this,'filterByLevel'))));
else
{
$ret=array_values(array_filter(array_filter($this->_logs,array($this,'filterByLevel'))));
return array_values(array_filter(array_filter($ret,array($this,'filterByCategory'))));
}
}
鍙栧洖鏃ュ織淇℃伅銆
娑堟伅鍙兘浼氳鏃ュ織绛夌骇and/or绫诲埆杩囨护銆
涓涓瓑绾ц繃婊ゅ櫒閫氳繃鐢ㄩ楀彿鎴栫┖鏍煎垎闅旂殑绛夌骇鍒楄〃鎸囧畾(渚嬪'trace, error')銆
涓涓被鍒繃婊ゅ櫒绫讳技浜庣瓑绾ц繃婊ゅ櫒 (渚嬪'system, system.web')銆
涓涓笉鍚屾槸鍦ㄧ瓑绾ц繃婊ゅ櫒涓綘鑳戒娇鐢ㄧ被浼'system.*'鐨勬ā寮忓幓鎸囩ず鎵鏈変互 'system'寮澶寸殑绫诲埆銆
濡傛灉浣犳病鏈夋寚瀹氱瓑绾ц繃婊ゅ櫒锛屽畠灏嗗彇鍥炴墍鏈夌瓑绾х殑鏃ュ織銆
杩欏悓鏍烽傜敤浜庣被鍒繃婊ゅ櫒銆
绛夌骇杩囨护鍣ㄥ拰绫诲埆杩囨护鍣ㄦ槸鍙互缁勫悎鐨勩
渚嬪锛屼粎浠呭悓鏃舵弧瓒充袱涓潯浠朵俊鎭墠杩斿洖銆
public integer getMemoryUsage()
| ||
{return} | integer | 搴旂敤绋嬪簭鐨勫唴瀛樹娇鐢ㄩ噺(鐢ㄥ瓧鑺)銆 |
public function getMemoryUsage()
{
if(function_exists('memory_get_usage'))
return memory_get_usage();
else
{
$output=array();
if(strncmp(PHP_OS,'WIN',3)===0)
{
exec('tasklist /FI "PID eq ' . getmypid() . '" /FO LIST',$output);
return isset($output[5])?preg_replace('/[\D]/','',$output[5])*1024 : 0;
}
else
{
$pid=getmypid();
exec("ps -eo%mem,rss,pid | grep $pid", $output);
$output=explode(" ",$output[0]);
return isset($output[1]) ? $output[1]*1024 : 0;
}
}
}
杩斿洖褰撳墠搴旂敤绋嬪簭鐨勫唴瀛樹娇鐢ㄩ噺銆 杩欎釜鏂规硶渚濋潬PHP鐨勫嚱鏁癿emory_get_usage()銆 濡傛灉瀹冧笉鍙敤,璇ユ柟娉曞皢灏濊瘯浣跨敤鎿嶄綔绯荤粺绋嬪簭鍘荤‘瀹氬唴瀛樼殑浣跨敤 濡傛灉鍐呭瓨浣跨敤閲忎粛涓嶈兘纭畾灏嗚繑鍥0銆
public array getProfilingResults(string $token=NULL, string $category=NULL, boolean $refresh=false)
| ||
$token | string | 浠ょ墝杩囨护鍣ㄣ傞粯璁や负null锛岃繖鎰忓懗鐫娌℃湁浠ょ墝杩囨护銆 |
$category | string | 绫诲埆杩囨护鍣ㄣ傞粯璁や负null锛岃繖鎰忓懗鐫娌℃湁绫诲埆杩囨护銆 |
$refresh | boolean | 鏄惁鍒锋柊鍐呴儴鐨勬椂闂磋绠椼 濡傛灉涓篺alse锛屼粎浠呯涓娆¤皟鐢ㄨ繖涓柟娉曡繘琛屽唴閮ㄧ殑鏃堕棿璁$畻銆 |
{return} | array | 鍒嗘瀽缁撴灉銆 |
public function getProfilingResults($token=null,$category=null,$refresh=false)
{
if($this->_timings===null || $refresh)
$this->calculateTimings();
if($token===null && $category===null)
return $this->_timings;
$results=array();
foreach($this->_timings as $timing)
{
if(($category===null || $timing[1]===$category) && ($token===null || $timing[0]===$token))
$results[]=$timing[2];
}
return $results;
}
杩斿洖鍒嗘瀽缁撴灉銆
姝ょ粨鏋滃彲鑳借浠ょ墝and/or绫诲埆杩囨护銆
濡傛灉娌℃湁鎸囧畾杩囨护鍣,杩斿洖缁撴灉灏嗘槸姣忎釜鍏冪礌閮芥槸鏁扮粍鐨勬暟缁($token,$category,$time)銆
濡傛灉鎸囧畾浜嗕竴涓繃婊ゅ櫒,缁撴灉灏嗘槸涓涓椂闂存暟缁勩
public void log(string $message, string $level='info', string $category='application')
| ||
$message | string | 璁板綍鐨勪俊鎭 |
$level | string | 淇℃伅鐨勭瓑绾(渚嬪'Trace', 'Warning', 'Error')銆備笉鍖哄垎澶у皬鍐欍 |
$category | string | 淇℃伅鐨勭被鍒(渚嬪'system.web')銆備笉鍖哄垎澶у皬鍐欍 |
public function log($message,$level='info',$category='application')
{
$this->_logs[]=array($message,$level,$category,microtime(true));
$this->_logCount++;
if($this->autoFlush>0 && $this->_logCount>=$this->autoFlush && !$this->_processing)
{
$this->_processing=true;
$this->flush($this->autoDump);
$this->_processing=false;
}
}
璁板綍涓鏉′俊鎭 閫氳繃杩欎釜鏂规硶璁板綍鐨勬秷鎭氳繃 getLogs 鍙栧洖銆
鍙傝
public void onFlush(CEvent $event)
| ||
$event | CEvent | 浜嬩欢鍙傛暟 |
public function onFlush($event)
{
$this->raiseEvent('onFlush', $event);
}
鍙戣捣涓涓 onFlush
浜嬩欢銆