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');
相關文章
- 如何將 winston log 庫記錄的日誌寫入 mongo DB 資料庫Go資料庫
- 如何將 EXCEL 資料寫入資料庫Excel資料庫
- 以太坊·將資料寫入到區塊鏈中區塊鏈
- python——將excel檔案寫入mysql資料庫中PythonExcelMySql資料庫
- 如何將外部資料庫 匯入到系統的SQL中資料庫SQL
- C# 將資料寫入到Excel表格C#Excel
- GeoRapter工具將shapefile資料匯入到Oracle空間資料庫中APTOracle資料庫
- python將目標檢測資料匯入到指定資料庫中Python資料庫
- 將資料庫中資料匯入至solr索引庫資料庫Solr索引
- 【Python】將網格資料寫入到VTK檔案Python
- 透過 C# 將資料寫入到Excel表格C#Excel
- Sqoop將MySQL資料匯入到hive中OOPMySqlHive
- 【繁星Code】如何在EF將實體註釋寫入資料庫中資料庫
- 如何將Azure SQL 資料庫還原到本地資料庫例項中SQL資料庫
- DataX將MySql資料庫資料同步到Oracle資料庫MySql資料庫Oracle
- 達夢資料庫如何將Excel表的資料複製到表中資料庫Excel
- 通過Python將監控資料由influxdb寫入到MySQLPythonUXMySql
- DataX將Oracle資料庫資料同步到達夢資料庫Oracle資料庫
- yii框架,掃描目錄下檔案入資料庫框架資料庫
- YII2 常用資料庫操作資料庫
- .NET Core使用NPOI將Excel中的資料批量匯入到MySQLExcelMySql
- Mysql增量寫入Hdfs(一) --將Mysql資料寫入Kafka TopicMySqlKafka
- 匯入excel資源到資料庫Excel資料庫
- 如何將Excl內資料匯入資料庫?資料庫
- 教你如何將二進位制檔案匯入到資料庫資料庫
- 首先將performance_schema這個資料庫下的需要ORM資料庫
- Python 利用pandas和mysql-connector獲取Excel資料寫入到MySQL資料庫PythonMySqlExcel資料庫
- .net core 中使用Log4net輸出日誌到Mysql資料庫中MySql資料庫
- 將MYSQL資料顯示在QT的tablewidget中/將QT中的資料儲存到MYSQL資料庫中MySqlQT資料庫
- golang中的log庫Golang
- 如何將資料庫中json格式的列值對映到java物件的屬性中資料庫JSONJava物件
- IIS 日誌匯入到資料庫的方法資料庫
- 在Django中,多資料操作,你可以編寫測試來查詢另一個資料庫伺服器中的資料,並將結果匯入當前Django專案的資料庫表中Django資料庫伺服器
- odps平臺將資料匯入到hdfs
- java 從EXCEL匯入到資料庫JavaExcel資料庫
- 將 symfony 的 dump server 適配到 Yii中Server
- 厲害了!12秒將百萬資料透過EasyExcel匯入MySQL資料庫中ExcelMySql資料庫
- yii2 資料庫常見查詢資料庫
- 使用scrapy框架把資料非同步寫入資料庫框架非同步資料庫