Yii將需要的log寫入到資料庫中
Base版本:
一,配置環境(main.php)
'log' => array('class' => 'CLogRouter',
'routes' => array(
//寫入檔案的log,預設categories為application
array(
'class' => 'CFileLogRoute',
'levels' => 'info, warning, error, profile, debug',
),
//寫入資料庫的log,categories為mail,web
array(
'class'=>'CDbLogRoute',
'connectionID'=>'db',
'levels'=>'info, warning, error, profile, debug',
'logTableName' => 'userlogs',
'categories'=>'mail,web', //可以隨便定義
),
),
)
二,建立資料庫
CREATE TABLE `userlogs` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`level` VARCHAR(128) NULL DEFAULT NULL,
`category` VARCHAR(128) NULL DEFAULT NULL,
`logtime` INT(11) UNSIGNED NULL DEFAULT NULL,
`message` TEXT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
//解析一下,資料庫的欄位為什麼是這些,可以看YII原始碼中的CDbLogRoute.php檔案(/framework/logging下)
//這個檔案中table欄位就包括這些,我們用Yii::log($message,$level,$category)的時候就會自動的將欄位
//插入到相應的欄位;
三,插入log
在你想執行的地方,加入如下程式碼,就可將log寫入到資料庫中
Yii::log('log message內容','info','mail');
================================================================================
擴充套件版:
擴充套件,如果我們需要儲存更多的資訊?:
比如,我需要將使用者的ip也存入到資料庫中,那麼該怎樣呢?
很簡單:一,首先寫一個類,繼承CLogRoute(我們發現CDbLogRoute也是繼承CLogRoute)
簡單做法:複製一份CDbLogRoute,將其改名為我們想要的名字,例如MyCDbLogRoute
這樣MyCDbLogRoute內容就和CDbLogRoute一樣了.
二,修改MyCDbLogRoute方法createLogTable
原方法:
protected function createLogTable($db,$tableName)
{
$db->createCommand()->createTable($tableName, array(
'id'=>'pk',
'level'=>'varchar(128)',
'category'=>'varchar(128)',
'logtime'=>'integer',
'message'=>'text',
));
}
修改成:
protected function createLogTable($db,$tableName)
{
$db->createCommand()->createTable($tableName, array(
'id'=>'pk',
'level'=>'varchar(128)',
'category'=>'varchar(128)',
'logtime'=>'integer',
'message'=>'text',
'ip'=>'text',
));
}
三,修改方法processLogs
原方法:
protected function processLogs($logs)
{
$command=$this->getDbConnection()->createCommand();
foreach($logs as $log)
{
$command->insert($this->logTableName,array(
'level'=>$log[1],
'category'=>$log[2],
'logtime'=>(int)$log[3],
'message'=>$log[0],
));
}
}
修改成:
protected function processLogs($logs)
{
$command=$this->getDbConnection()->createCommand();
foreach($logs as $log)
{
$command->insert($this->logTableName,array(
'level'=>$log[1],
'category'=>$log[2],
'logtime'=>(int)$log[3],
'message'=>$log[0],
'ip'=>Yii::app()->request->userHostAddress,//獲取使用者ip
));
}
}
四,建立一個table
CREATE TABLE `userlogs` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`level` VARCHAR(128) NULL DEFAULT NULL,
`category` VARCHAR(128) NULL DEFAULT NULL,
`logtime` INT(11) UNSIGNED NULL DEFAULT NULL,
`message` TEXT NULL,
`ip` TEXT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
五,修改main.php
將我們建立的MyCDbLogRoute拷貝到protected/components下,
同時修改main.php中的'class'=>'CDbLogRoute'=》'class'=>'MyCDbLogRoute'
六,記錄log
在你想執行的地方,加入如下程式碼,就可將log寫入到資料庫中
Yii::log('log message內容','info','mail');
相關文章
- log4j+JDBC+mySQL 將物件寫入資料庫JDBCMySql物件資料庫
- 以太坊·將資料寫入到區塊鏈中區塊鏈
- pl/sql developer將excel資料匯入到資料庫中SQLDeveloperExcel資料庫
- 如何將 EXCEL 資料寫入資料庫Excel資料庫
- 如何將 winston log 庫記錄的日誌寫入 mongo DB 資料庫Go資料庫
- 如何將外部資料庫 匯入到系統的SQL中資料庫SQL
- 關於LOG4J寫入SQLServer資料庫中的求助!!SQLServer資料庫
- log4j中將日誌插入到資料庫中遇到的問題^_^資料庫
- python——將excel檔案寫入mysql資料庫中PythonExcelMySql資料庫
- C# 將資料寫入到Excel表格C#Excel
- 如何將資料匯入到 SQL Server Compact Edition 資料庫中SQLServer資料庫
- GeoRapter工具將shapefile資料匯入到Oracle空間資料庫中APTOracle資料庫
- python將目標檢測資料匯入到指定資料庫中Python資料庫
- Sql Server資料庫資料匯入到SQLite資料庫中Server資料庫SQLite
- SqlServer將資料庫中的表複製到另一個資料庫SQLServer資料庫
- 透過 C# 將資料寫入到Excel表格C#Excel
- 將excel中資料從window上匯入到linux中oracle資料庫ExcelLinuxOracle資料庫
- 資料庫中的logfile資料庫
- 【繁星Code】如何在EF將實體註釋寫入資料庫中資料庫
- Sqoop將MySQL資料匯入到hive中OOPMySqlHive
- 把csv檔案的資料匯入到oracle資料庫中Oracle資料庫
- java 實現excel中的資料匯入到資料庫的功能JavaExcel資料庫
- Java實現將txt中的內容寫入到excel中JavaExcel
- 如何將Azure SQL 資料庫還原到本地資料庫例項中SQL資料庫
- 達夢資料庫如何將Excel表的資料複製到表中資料庫Excel
- 資料庫寫入的問題資料庫
- 【Python】將網格資料寫入到VTK檔案Python
- DataX將MySql資料庫資料同步到Oracle資料庫MySql資料庫Oracle
- 將某資料庫的ACL資訊寫入檔案將其作為附件寄出資料庫
- PHP資料寫入MySql資料庫PHPMySql資料庫
- 將rac資料庫改為單機資料庫需要修改的引數資料庫
- DataX將Oracle資料庫資料同步到達夢資料庫Oracle資料庫
- yii框架,掃描目錄下檔案入資料庫框架資料庫
- 將高版本mysql資料庫的資料匯入低版本mysql中MySql資料庫
- ssis 寫檔案到資料庫資料庫
- 將XML匯入資料庫XML資料庫
- .NET Core使用NPOI將Excel中的資料批量匯入到MySQLExcelMySql
- (OAF)jdeveloper整合log4j並將日誌輸出到指定檔案並寫入資料庫Developer資料庫