Yii为每个用户分别记录日志文件

时间:2014-08-05 10:27:41

标签: logging yii

我想将日志消息存储在每个用户的单独日志文件中。 我当前的配置如下:

'log'=>array(
'class'=>'CLogRouter',
'routes'=>array(
    array(
        'class'=>'CFileLogRoute',
        'logFile'=>'custom.log.u1',
        'categories'=>'error.*',
    ),
    array(
        'class'=>'CFileLogRoute',
        'logFile'=>'custom.log.u2',
        'categories'=>'error.*',
    ),
    ...
))

但我的用户超过2,日志文件名应动态设置... 我怎么能这样做......?

1 个答案:

答案 0 :(得分:2)

我能想到的是扩展CFileLogRoute并覆盖一些功能:

在一个像组件一样自动加载的文件夹中创建一个名为MyLog的php文件

class MyLog extends CFileLogRoute
{
    public $filderName;

    public function getLogFile()
    {
        return parent::getLogFile() . (int)Yii::app()->user->id;
    }

    public function setLogFile($value)
    {
        parent::setLogFile($value . (int)Yii::app()->user->id);
    }
}

然后在你的配置中:

'log'=>array(
'class'=>'CLogRouter',
'routes'=>array(
    array(
        'class'=>'MyLog',
        'categories'=>'error.*',
    ),
    ...
))