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

问题描述 投票:2回答:1

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

运行/日志/ 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路径值,这样如果在任何模块中调用任何错误,警告,信息,它将自动选择该模块名称并记录信息。

yii2 yii2-advanced-app yii-components
1个回答
0
投票

您可以从控制器或模块init动态添加日志目标。

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

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

© www.soinside.com 2019 - 2024. All rights reserved.