如何在yii中为不同的模块动态设置logFile路径

时间:2016-08-09 13:51:43

标签: yii2 yii2-advanced-app yii-components

我想为每个模块设置不同的日志路径,以便所有错误,警告都应该用模块名称作为父文件夹进行分类。

  

运行/日志/ MODULE_NAME / errors.log

     

运行/日志/ MODULE_NAME / warnings.log

     

运行/日志/ MODULE_NAME / info.log建立。

当前日志组件在config / main.php

中配置
    'log' => [
        'traceLevel' => YII_DEBUG ? 3 : 0,
        'flushInterval' => 1,
        'targets' => [
            [
                'class' => 'yii\log\FileTarget',
                'levels' => ['info'],
                'categories' => ['common\modules\*'],
                'logFile' => '@runtime/logs/common.modules.info.log',  
            ],
      ],
]

我想在上面的应用程序配置文件中动态分配logFile路径值,这样如果在任何模块中调用任何错误,警告,信息,它将自动选择该模块名称并记录信息。

1 个答案:

答案 0 :(得分:0)

您可以从控制器或模块初始化中动态添加日志目标。

$target = new FileTarget();
$target->logFile = \Yii::getAlias('@runtime') . '/custom.log'
$target->categories = ['log-category']
\Yii::$app->getLog()->targets = [$target];

但是我认为最好创建新的FileTarget类并将静态设置(如类别)移入其中。