一,配置环境(main.php)
'log' => array(
)
二,创建数据库
CREATE TABLE `userlogs` (
) 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)修改成:
protected function createLogTable($db,$tableName)
三,修改方法processLogs
原方法:
protected function processLogs($logs)
修改成:
protected function processLogs($logs)
四,创建一个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');