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瀛樺偍鏃ュ織淇℃伅鍒版暟鎹簱琛ㄤ腑銆
鎸囧畾鏁版嵁搴撹〃瀛樺湪鏃ュ織淇℃伅锛岃缃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 |
鍏叡鏂规硶
鍙椾繚鎶ゆ柟娉
鏂规硶 | 鎻忚堪 | 瀹氫箟鍦 |
---|---|---|
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
灞炴
鍙
protected CDbConnection getDbConnection()
鏁版嵁搴撹繛鎺ュ疄渚
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();
}
}
瀛樺偍鏃ュ織淇℃伅鍒版暟鎹簱銆