Hi all, how can extend CDbLogRoute class for add custom string in log events ? Actually I split a single string (message param)separated by comma
thanks
Hi all, how can extend CDbLogRoute class for add custom string in log events ? Actually I split a single string (message param)separated by comma
thanks
the fundamental problem in my case is that there is no property Autodump and autoflush in clogroute, only in Clogger
this is only an example:
class ELog extends CDbLogRoute {
protected function createLogTable($db,$tableName) {
parent::createLogTable($db,$tableName);
$sql="
ALTER TABLE $tableName
ADD datetime timestamp default CURRENT_TIMESTAMP,
ADD text TEXT default NULL,
ADD type VARCHAR(10) default NULL,
ADD value VARCHAR(50) default NULL,
ADD id_user int(11) default NULL,
ADD ip VARCHAR(13) default NULL,
ADD lang VARCHAR(5) default NULL,
ADD httpinfo VARCHAR(255),
ADD ishtml tinyint(1) unsigned default '0'
";
$db->createCommand($sql)->execute();
}
protected function processLogs($logs)
{
$sql="
INSERT INTO {$this->logTableName}
(level, category, logtime, message, ip, httpinfo, type, text, id_user, value) VALUES
(:level, :category, :logtime, :message, :ip, :httpinfo, :type, :text, :id_user, :value)
";
$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]);
//personalized fields
$command->bindValue(':ip', $this->getrealip());
$command->bindValue(':httpinfo', $this->gethttpinfo());
$command->bindValue(':id_user', Yii::app()->user->getId());
$elog=CJSON::decode($log[0]);
$command->bindValue(':type', (!isset($elog['type'])?null:$elog['type']));
$command->bindValue(':text', (!isset($elog['text'])?null:$elog['text']));
$command->bindValue(':value', (!isset($elog['value'])?null:$elog['value']));
$command->execute();
}
}
in config/main.php
'log'=>array(
'class'=>'CLogRouter',
'routes'=>array(
array(
'class'=>'application.components.ELog',
'levels'=>'elog',
'connectionID'=>'db',
'logTableName'=>'yii_logs',
'autoCreateLogTable'=>true,
),
),
),
in your code:
Yii::log('this is a test', 'elog');
Yii::log(CJSON::encode(array('type'=>'neworder', 'text'=>'order nºxxxx succesfully saved', 'value'=>'xxxx')), 'elog');
For more detail visit
Error logs save in Db in Yii