Yii Framework v1.1.10 绫诲弬鑰

CLogger

system.logging
缁ф壙 class CLogger » CComponent
婧愯嚜 1.0
鐗堟湰 $Id: CLogger.php 3515 2011-12-28 12:29:24Z mdomba $
婧愮爜 framework/logging/CLogger.php
CLogger鍦ㄥ唴瀛樹腑璁板綍涓鏉℃棩蹇椾俊鎭

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

浜嬩欢

闅愯棌缁ф壙浜嬩欢

浜嬩欢鎻忚堪瀹氫箟鍦
onFlush 鍙戣捣涓涓 onFlush 浜嬩欢銆 CLogger

灞炴ц缁

autoDump 灞炴 锛堝彲鐢ㄨ嚜 v1.1.8锛
public boolean $autoDump;

杩欎釜灞炴у皢琚綔涓哄弬鏁颁紶閫掑埌flush()褰撳畠鍦log()涓璋冪敤鏃讹紝 鐢变簬autoFlush宸茬粡瀹屾垚闄愬埗銆 榛樿鏃讹紝杩欎釜灞炴т负false锛屾剰鍛崇潃宸茬粡杩囨护鐨勪俊鎭粛鐒朵繚瀛樺湪鍐呭湪涓紝 姣忔flush()鏃ュ織璺敱璋冪敤涔嬪悗銆 濡傛灉涓簍rue锛屽凡杩囨护鐨勪俊鎭淇濆瓨鍦ㄥ疄闄呯殑濯掍粙涓紝鍦ㄦ瘡娆log()涓殑flush()琚皟鐢ㄤ箣鍚庛

autoFlush 灞炴 锛堝彲鐢ㄨ嚜 v1.1.0锛
public integer $autoFlush;

鍦ㄥ畠浠鍒锋柊鍒扮洰褰曞墠澶氬皯淇℃伅搴旇琚褰曘 榛樿鍒10,000, 鎰忓懗鐫姣10,000鏉′俊鎭紝杩欎釜flush鏂规硶鑷姩琚彂璧蜂竴娆′俊鎭 濡傛灉涓0锛屽畠鎰忓懗鐫淇℃伅涓嶄細琚嚜鍔ㄥ埛鏂般

executionTime 灞炴 鍙
public float getExecutionTime()

杩斿洖鏈嶅姟褰撳墠璇锋眰鐨勬绘椂闂淬 杩欎釜鏂规硶璁$畻鐜板湪鍜屽父閲廦II_BEGIN_TIME瀹氫箟鐨勬椂闂存埑涔嬮棿鐨勪笉鍚 涓轰簡浼扮畻鎵ц鏃堕棿鏇村姞鍑嗙‘銆 姝ゅ父閲忓簲璇ュ敖鍙兘鏃╃殑瀹氫箟(鏈濂藉湪杩涘叆鑴氭湰鏃跺紑濮嬨)

logs 灞炴 鍙
public array getLogs(string $levels='', string $categories='')

鍙栧洖鏃ュ織淇℃伅銆

娑堟伅鍙兘浼氳鏃ュ織绛夌骇and/or绫诲埆杩囨护銆 涓涓瓑绾ц繃婊ゅ櫒閫氳繃鐢ㄩ楀彿鎴栫┖鏍煎垎闅旂殑绛夌骇鍒楄〃鎸囧畾(渚嬪'trace, error')銆 涓涓被鍒繃婊ゅ櫒绫讳技浜庣瓑绾ц繃婊ゅ櫒 (渚嬪'system, system.web')銆 涓涓笉鍚屾槸鍦ㄧ瓑绾ц繃婊ゅ櫒涓綘鑳戒娇鐢ㄧ被浼'system.*'鐨勬ā寮忓幓鎸囩ず鎵鏈変互 'system'寮澶寸殑绫诲埆銆





濡傛灉浣犳病鏈夋寚瀹氱瓑绾ц繃婊ゅ櫒锛屽畠灏嗗彇鍥炴墍鏈夌瓑绾х殑鏃ュ織銆 杩欏悓鏍烽傜敤浜庣被鍒繃婊ゅ櫒銆

绛夌骇杩囨护鍣ㄥ拰绫诲埆杩囨护鍣ㄦ槸鍙互缁勫悎鐨勩 渚嬪锛屼粎浠呭悓鏃舵弧瓒充袱涓潯浠朵俊鎭墠杩斿洖銆

memoryUsage 灞炴 鍙
public integer getMemoryUsage()

杩斿洖褰撳墠搴旂敤绋嬪簭鐨勫唴瀛樹娇鐢ㄩ噺銆 杩欎釜鏂规硶渚濋潬PHP鐨勫嚱鏁癿emory_get_usage()銆 濡傛灉瀹冧笉鍙敤,璇ユ柟娉曞皢灏濊瘯浣跨敤鎿嶄綔绯荤粺绋嬪簭鍘荤‘瀹氬唴瀛樼殑浣跨敤 濡傛灉鍐呭瓨浣跨敤閲忎粛涓嶈兘纭畾灏嗚繑鍥0銆

profilingResults 灞炴 鍙
public array getProfilingResults(string $token=NULL, string $category=NULL, boolean $refresh=false)

杩斿洖鍒嗘瀽缁撴灉銆 姝ょ粨鏋滃彲鑳借浠ょ墝and/or绫诲埆杩囨护銆 濡傛灉娌℃湁鎸囧畾杩囨护鍣,杩斿洖缁撴灉灏嗘槸姣忎釜鍏冪礌閮芥槸鏁扮粍鐨勬暟缁($token,$category,$time)銆

濡傛灉鎸囧畾浜嗕竴涓繃婊ゅ櫒,缁撴灉灏嗘槸涓涓椂闂存暟缁勩

鏂规硶璇︾粏

flush() 鏂规硶 锛堝彲鐢ㄨ嚜 v1.1.0锛
public void flush(boolean $dumpLogs=false)
$dumpLogs boolean 鏄惁澶勭悊姝ゆ棩蹇
婧愮爜锛 framework/logging/CLogger.php#286 (鏄剧ず)
public function flush($dumpLogs=false)
{
    
$this->onFlush(new CEvent($this, array('dumpLogs'=>$dumpLogs)));
    
$this->_logs=array();
    
$this->_logCount=0;
}

浠庡唴瀛樹腑绉婚櫎鎵鏈夎褰曠殑淇℃伅銆 杩欎釜鏂规硶灏嗗紩璧蜂竴涓 onFlush 浜嬩欢銆 闄勫姞浜嬩欢澶勭悊绋嬪簭鑳藉湪瀹冧滑琚Щ闄ゅ墠澶勭悊姝ゆ棩蹇椾俊鎭

getExecutionTime() 鏂规硶
public float getExecutionTime()
{return} float 鏈嶅姟褰撳墠璇锋眰鐨勬绘椂闂淬
婧愮爜锛 framework/logging/CLogger.php#180 (鏄剧ず)
public function getExecutionTime()
{
    return 
microtime(true)-YII_BEGIN_TIME;
}

杩斿洖鏈嶅姟褰撳墠璇锋眰鐨勬绘椂闂淬 杩欎釜鏂规硶璁$畻鐜板湪鍜屽父閲廦II_BEGIN_TIME瀹氫箟鐨勬椂闂存埑涔嬮棿鐨勪笉鍚 涓轰簡浼扮畻鎵ц鏃堕棿鏇村姞鍑嗙‘銆 姝ゅ父閲忓簲璇ュ敖鍙兘鏃╃殑瀹氫箟(鏈濂藉湪杩涘叆鑴氭湰鏃跺紑濮嬨)

getLogs() 鏂规硶
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) 鍙栧緱);
婧愮爜锛 framework/logging/CLogger.php#129 (鏄剧ず)
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'寮澶寸殑绫诲埆銆





濡傛灉浣犳病鏈夋寚瀹氱瓑绾ц繃婊ゅ櫒锛屽畠灏嗗彇鍥炴墍鏈夌瓑绾х殑鏃ュ織銆 杩欏悓鏍烽傜敤浜庣被鍒繃婊ゅ櫒銆

绛夌骇杩囨护鍣ㄥ拰绫诲埆杩囨护鍣ㄦ槸鍙互缁勫悎鐨勩 渚嬪锛屼粎浠呭悓鏃舵弧瓒充袱涓潯浠朵俊鎭墠杩斿洖銆

getMemoryUsage() 鏂规硶
public integer getMemoryUsage()
{return} integer 搴旂敤绋嬪簭鐨勫唴瀛樹娇鐢ㄩ噺(鐢ㄥ瓧鑺)銆
婧愮爜锛 framework/logging/CLogger.php#193 (鏄剧ず)
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銆

getProfilingResults() 鏂规硶
public array getProfilingResults(string $token=NULL, string $category=NULL, boolean $refresh=false)
$token string 浠ょ墝杩囨护鍣ㄣ傞粯璁や负null锛岃繖鎰忓懗鐫娌℃湁浠ょ墝杩囨护銆
$category string 绫诲埆杩囨护鍣ㄣ傞粯璁や负null锛岃繖鎰忓懗鐫娌℃湁绫诲埆杩囨护銆
$refresh boolean 鏄惁鍒锋柊鍐呴儴鐨勬椂闂磋绠椼 濡傛灉涓篺alse锛屼粎浠呯涓娆¤皟鐢ㄨ繖涓柟娉曡繘琛屽唴閮ㄧ殑鏃堕棿璁$畻銆
{return} array 鍒嗘瀽缁撴灉銆
婧愮爜锛 framework/logging/CLogger.php#227 (鏄剧ず)
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)銆

濡傛灉鎸囧畾浜嗕竴涓繃婊ゅ櫒,缁撴灉灏嗘槸涓涓椂闂存暟缁勩

log() 鏂规硶
public void log(string $message, string $level='info', string $category='application')
$message string 璁板綍鐨勪俊鎭
$level string 淇℃伅鐨勭瓑绾(渚嬪'Trace', 'Warning', 'Error')銆備笉鍖哄垎澶у皬鍐欍
$category string 淇℃伅鐨勭被鍒(渚嬪'system.web')銆備笉鍖哄垎澶у皬鍐欍
婧愮爜锛 framework/logging/CLogger.php#91 (鏄剧ず)
public function log($message,$level='info',$category='application')
{
    
$this->_logs[]=array($message,$level,$category,microtime(true));
    
$this->_logCount++;
    if(
$this->autoFlush>&& $this->_logCount>=$this->autoFlush && !$this->_processing)
    {
        
$this->_processing=true;
        
$this->flush($this->autoDump);
        
$this->_processing=false;
    }
}

璁板綍涓鏉′俊鎭 閫氳繃杩欎釜鏂规硶璁板綍鐨勬秷鎭氳繃 getLogs 鍙栧洖銆

鍙傝

onFlush() 鏂规硶 锛堝彲鐢ㄨ嚜 v1.1.0锛
public void onFlush(CEvent $event)
$event CEvent 浜嬩欢鍙傛暟
婧愮爜锛 framework/logging/CLogger.php#298 (鏄剧ず)
public function onFlush($event)
{
    
$this->raiseEvent('onFlush'$event);
}

鍙戣捣涓涓 onFlush 浜嬩欢銆

Copyright © 2008-2011 by Yii Software LLC
All Rights Reserved.