Yii Framework v1.1.10 绫诲弬鑰

CDbLogRoute

system.logging
缁ф壙 class CDbLogRoute » CLogRoute » CComponent
婧愯嚜 1.0
鐗堟湰 $Id: CDbLogRoute.php 3069 2011-03-14 00:28:38Z qiang.xue $
婧愮爜 framework/logging/CDbLogRoute.php
CDbLogRoute瀛樺偍鏃ュ織淇℃伅鍒版暟鎹簱琛ㄤ腑銆

鎸囧畾鏁版嵁搴撹〃瀛樺湪鏃ュ織淇℃伅锛岃缃logTableName涓鸿〃鍚嶏紝 骞朵笖鎸囧畾connectionID涓轰竴涓CDbConnection鐨勫簲鐢ㄧ▼搴忕粍浠剁殑ID 銆 濡傛灉浠栦滑娌℃湁璁剧疆锛屼竴涓悕涓衡榣og-YiiVersion.db鈥欑殑SQLite3鏁版嵁搴撳皢琚垱寤猴紝骞朵笖鍦ㄥ簲鐢ㄧ▼搴忚繍琛屾椂鐩綍涓嬩娇鐢ㄣ CCDbLogRoute瀛樺偍鏃ュ織淇℃伅鍒版暟鎹簱琛ㄤ腑銆

鍏叡灞炴

闅愯棌缁ф壙灞炴

灞炴绫诲瀷鎻忚堪瀹氫箟鍦
autoCreateLogTable boolean 鏄惁鏃ュ織鏁版嵁搴撹〃涓嶅瓨鍦ㄦ椂鑷姩鍒涘缓銆傞粯璁や负true銆 CDbLogRoute
categories string 琚楀彿鎴栫┖鏍煎垎闅旂殑绫诲埆鍒楄〃銆傞粯璁や负绌猴紝鎰忓懗鐫鎵鏈夌被鍒 CLogRoute
connectionID string 搴旂敤绋嬪簭缁勪欢CDbConnection鐨処D銆 濡傛灉娌℃湁璁剧疆, 涓涓猄QLite鏁版嵁灏嗚鑷姩鍒涘缓鍜屼娇鐢ㄣ 姝QLite鏁版嵁搴撴枃浠舵槸 protected/runtime/log-YiiVersion. CDbLogRoute
enabled boolean 鏄惁鍚敤杩欎釜鏃ュ織璺敱銆傞粯璁や负true銆 CLogRoute
filter mixed 闄勫姞杩囨护鍣 (渚嬪 CLogFilter) 瀹冭搴旂敤鍒版棩蹇椾俊鎭 杩欎釜灞炴х殑鍊艰浼犻掑埌 Yii::createComponent 鍒涘缓涓涓棩蹇楄繃婊ゅ櫒瀵硅薄銆 缁撴灉锛岃繖鍙兘鏄竴涓〃绀鸿繃婊ゅ櫒绫诲悕鐨勫瓧绗︿覆鎴栦竴涓〃绀鸿繃婊ゅ櫒閰嶇疆鐨勬暟缁勩

鎬讳箣锛屾棩蹇楄繃婊ゅ櫒绫诲簲璇ユ槸 CLogFilter 鎴栧畠鐨勪竴涓瓙绫汇 榛樿涓簄ull锛屾剰鍛崇潃娌℃湁杩囨护鍣ㄨ浣跨敤銆
CLogRoute
levels string 鐢ㄩ楀彿鎴栫┖鏍煎垎闅旂殑绛夌骇鍒楄〃銆傞粯璁ゆ槸绌猴紝鎰忓懗鐫鎵鏈夌瓑绾с CLogRoute
logTableName string 瀛樺偍鏃ュ織淇℃伅鐨勬暟鎹簱琛ㄥ悕銆傞粯璁ゆ槸鈥榊iiLog鈥欍 濡傛灉autoCreateLogTable鏄痜alse锛屼綘鎯宠嚜宸辨墜鍔ㄥ垱寤烘暟鎹〃锛 浣犻渶瑕佺‘淇濇暟鎹〃鏄笅闈㈢殑缁撴瀯锛
 (
	id       INTEGER NOT NULL PRIMARY KEY,
	level    VARCHAR(128),
	category VARCHAR(128),
	logtime  INTEGER,
	message  TEXT
  )
娉ㄦ剰锛屸榠d鈥欏垪蹇呴』浣滀负auto-incremental鍒椼 鍦∕ySQL涓紝杩欐剰鍛充綘搴旇 id INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY锛 鍦≒ostgreSQL锛屼綘闇瑕id SERIAL PRIMARY KEY
CDbLogRoute
logs array 鍒扮洰鍓嶄负姝㈣繖涓棩蹇楄矾鐢辨悳闆嗙殑鏃ュ織銆 CLogRoute

鍙椾繚鎶ゅ睘鎬

闅愯棌缁ф壙灞炴

灞炴绫诲瀷鎻忚堪瀹氫箟鍦
dbConnection CDbConnection 鏁版嵁搴撹繛鎺ュ疄渚 CDbLogRoute

鍏叡鏂规硶

闅愯棌缁ф壙鏂规硶

鏂规硶鎻忚堪瀹氫箟鍦
__call() 濡傛灉绫讳腑娌℃湁璋冪殑鏂规硶鍚嶏紝鍒欒皟鐢ㄨ繖涓柟娉曘 CComponent
__get() 杩斿洖涓涓睘鎬у笺佷竴涓簨浠跺鐞嗙▼搴忓垪琛ㄦ垨涓涓涓哄悕绉般 CComponent
__isset() 妫鏌ヤ竴涓睘鎬ф槸鍚︿负null銆 CComponent
__set() 璁剧疆涓涓粍浠剁殑灞炴у笺 CComponent
__unset() 璁剧疆涓涓粍浠剁殑灞炴т负null銆 CComponent
asa() 杩斿洖杩欎釜鍚嶅瓧鐨勮涓哄璞° CComponent
attachBehavior() 闄勫姞涓涓涓哄埌缁勪欢銆 CComponent
attachBehaviors() 闄勫姞涓涓涓哄垪琛ㄥ埌缁勪欢銆 CComponent
attachEventHandler() 涓轰簨浠堕檮鍔犱竴涓簨浠跺鐞嗙▼搴忋 CComponent
canGetProperty() 纭畾灞炴ф槸鍚﹀彲璇汇 CComponent
canSetProperty() 纭畾灞炴ф槸鍚﹀彲鍐欍 CComponent
collectLogs() 浠庢棩蹇楄褰曞櫒鍙栧洖宸茶繃婊ょ殑鏃ュ織淇℃伅浠ヤ究杩涗竴姝ュ鐞嗐 CLogRoute
detachBehavior() 浠庣粍浠朵腑鍒嗙涓涓涓恒 CComponent
detachBehaviors() 浠庣粍浠朵腑鍒嗙鎵鏈夎涓恒 CComponent
detachEventHandler() 鍒嗙涓涓瓨鍦ㄧ殑浜嬩欢澶勭悊绋嬪簭銆 CComponent
disableBehavior() 绂佺敤涓涓檮鍔犺涓恒 CComponent
disableBehaviors() 绂佺敤缁勪欢闄勫姞鐨勬墍鏈夎涓恒 CComponent
enableBehavior() 鍚敤涓涓檮鍔犺涓恒 CComponent
enableBehaviors() 鍚敤缁勪欢闄勫姞鐨勬墍鏈夎涓恒 CComponent
evaluateExpression() 璁$畻涓涓狿HP琛ㄨ揪寮忥紝鎴栨牴鎹粍浠朵笂涓嬫枃鎵ц鍥炶皟銆 CComponent
getEventHandlers() 杩斿洖涓涓簨浠剁殑闄勫姞澶勭悊绋嬪簭鍒楄〃銆 CComponent
hasEvent() 纭畾涓涓簨浠舵槸鍚﹀畾涔夈 CComponent
hasEventHandler() 妫鏌ヤ簨浠舵槸鍚︽湁闄勫姞鐨勫鐞嗙▼搴忋 CComponent
hasProperty() 纭畾灞炴ф槸鍚﹁瀹氫箟銆 CComponent
init() 鍒濆鍖栨璺敱銆 CDbLogRoute
raiseEvent() 鍙戣捣涓涓簨浠躲 CComponent

鍙椾繚鎶ゆ柟娉

闅愯棌缁ф壙鏂规硶

鏂规硶鎻忚堪瀹氫箟鍦
createLogTable() 鍒涘缓鏁版嵁搴撹〃涓哄瓨鍌ㄦ棩蹇椾俊鎭 CDbLogRoute
formatLogMessage() 鏍煎紡鍖栦竴鏉℃棩蹇椾俊鎭凡缁欏畾涓嶅悓瀛楁銆 CLogRoute
getDbConnection() 杩斿洖鏁版嵁搴撹繛鎺ュ疄渚 CDbLogRoute
processLogs() 瀛樺偍鏃ュ織淇℃伅鍒版暟鎹簱銆 CDbLogRoute

灞炴ц缁

autoCreateLogTable 灞炴
public boolean $autoCreateLogTable;

鏄惁鏃ュ織鏁版嵁搴撹〃涓嶅瓨鍦ㄦ椂鑷姩鍒涘缓銆傞粯璁や负true銆

鍙傝

connectionID 灞炴
public string $connectionID;

搴旂敤绋嬪簭缁勪欢CDbConnection鐨処D銆 濡傛灉娌℃湁璁剧疆, 涓涓猄QLite鏁版嵁灏嗚鑷姩鍒涘缓鍜屼娇鐢ㄣ 姝QLite鏁版嵁搴撴枃浠舵槸 protected/runtime/log-YiiVersion.db

dbConnection 灞炴 鍙

鏁版嵁搴撹繛鎺ュ疄渚

logTableName 灞炴
public string $logTableName;

瀛樺偍鏃ュ織淇℃伅鐨勬暟鎹簱琛ㄥ悕銆傞粯璁ゆ槸鈥榊iiLog鈥欍 濡傛灉autoCreateLogTable鏄痜alse锛屼綘鎯宠嚜宸辨墜鍔ㄥ垱寤烘暟鎹〃锛 浣犻渶瑕佺‘淇濇暟鎹〃鏄笅闈㈢殑缁撴瀯锛

 (
	id       INTEGER NOT NULL PRIMARY KEY,
	level    VARCHAR(128),
	category VARCHAR(128),
	logtime  INTEGER,
	message  TEXT
  )
娉ㄦ剰锛屸榠d鈥欏垪蹇呴』浣滀负auto-incremental鍒椼 鍦∕ySQL涓紝杩欐剰鍛充綘搴旇 id INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY锛 鍦≒ostgreSQL锛屼綘闇瑕id SERIAL PRIMARY KEY

鍙傝

鏂规硶璇︾粏

createLogTable() 鏂规硶
protected void createLogTable(CDbConnection $db, string $tableName)
$db CDbConnection 鏁版嵁搴撹繛鎺
$tableName string 瑕佸垱寤虹殑琛ㄥ悕绉
婧愮爜锛 framework/logging/CDbLogRoute.php#90 (鏄剧ず)
protected function createLogTable($db,$tableName)
{
    
$driver=$db->getDriverName();
    if(
$driver==='mysql')
        
$logID='id INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY';
    else if(
$driver==='pgsql')
        
$logID='id SERIAL PRIMARY KEY';
    else
        
$logID='id INTEGER NOT NULL PRIMARY KEY';

    
$sql="
CREATE TABLE 
$tableName
(
$logID,
level VARCHAR(128),
category VARCHAR(128),
logtime INTEGER,
message TEXT
)"
;
    
$db->createCommand($sql)->execute();
}

鍒涘缓鏁版嵁搴撹〃涓哄瓨鍌ㄦ棩蹇椾俊鎭

getDbConnection() 鏂规硶
protected CDbConnection getDbConnection()
{return} CDbConnection 鏁版嵁搴撹繛鎺ュ疄渚
婧愮爜锛 framework/logging/CDbLogRoute.php#116 (鏄剧ず)
protected function getDbConnection()
{
    if(
$this->_db!==null)
        return 
$this->_db;
    else if((
$id=$this->connectionID)!==null)
    {
        if((
$this->_db=Yii::app()->getComponent($id)) instanceof CDbConnection)
            return 
$this->_db;
        else
            throw new 
CException(Yii::t('yii','CDbLogRoute.connectionID "{id}" does not point to a valid CDbConnection application component.',
                array(
'{id}'=>$id)));
    }
    else
    {
        
$dbFile=Yii::app()->getRuntimePath().DIRECTORY_SEPARATOR.'log-'.Yii::getVersion().'.db';
        return 
$this->_db=new CDbConnection('sqlite:'.$dbFile);
    }
}

init() 鏂规硶
public void init()
婧愮爜锛 framework/logging/CDbLogRoute.php#66 (鏄剧ず)
public function init()
{
    
parent::init();

    if(
$this->autoCreateLogTable)
    {
        
$db=$this->getDbConnection();
        
$sql="DELETE FROM {$this->logTableName} WHERE 0=1";
        try
        {
            
$db->createCommand($sql)->execute();
        }
        catch(
Exception $e)
        {
            
$this->createLogTable($db,$this->logTableName);
        }
    }
}

鍒濆鍖栨璺敱銆 杩欎釜鏂规硶鍦ㄨ矾鐢辩鐞嗗櫒鍒涘缓姝よ矾鐢卞悗鍙戣捣銆

processLogs() 鏂规硶
protected void processLogs(array $logs)
$logs array 鏃ュ織淇℃伅鍒楄〃
婧愮爜锛 framework/logging/CDbLogRoute.php#139 (鏄剧ず)
protected function processLogs($logs)
{
    
$sql="
INSERT INTO 
{$this->logTableName}
(level, category, logtime, message) VALUES
(:level, :category, :logtime, :message)
"
;
    
$command=$this->getDbConnection()->createCommand($sql);
    foreach(
$logs as $log)
    {
        
$command->bindValue(':level',$log[1]);
        
$command->bindValue(':category',$log[2]);
        
$command->bindValue(':logtime',(int)$log[3]);
        
$command->bindValue(':message',$log[0]);
        
$command->execute();
    }
}

瀛樺偍鏃ュ織淇℃伅鍒版暟鎹簱銆

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