Yii2 如何为yii中的不同模块动态设置日志文件路径

Yii2 如何为yii中的不同模块动态设置日志文件路径,yii2,yii2-advanced-app,yii-components,Yii2,Yii2 Advanced App,Yii Components,我想为每个模块设置不同的日志路径,以便所有错误、警告都应以模块名称作为父文件夹进行分类 i、 e 运行时/logs/module_name/errors.log 运行时/logs/module_name/warnings.log 运行时/logs/module_name/info.log 当前日志组件是在config/main.php中配置的 'log' => [ 'traceLevel' => YII_DEBUG ? 3 : 0, 'flus

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

i、 e

运行时/logs/module_name/errors.log

运行时/logs/module_name/warnings.log

运行时/logs/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',  
            ],
      ],
]

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

您可以从controller或module init动态添加日志目标

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

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

我不知道动态更改的可能性。您可能需要通过手动编写所有内容来暂时解决此问题。@EdvinTenovimas一定有办法,而不是编写所有内容……老实说,我无法回答这个问题。对不起(我只是手写了所有的东西(但没花太长时间)。