Как динамически установить путь к logFile для разных модулей в yii

Я хочу установить разные 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 в указанном выше файле конфигурации приложения, чтобы при возникновении любой ошибки, предупреждения, информации в любом модуле он автоматически выбирал имя этого модуля и записывал информацию в журнал.

0 ответов

Вы можете добавить цель журнала динамически из контроллера или модуля init.

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

Но я думаю, что будет лучше создать новый класс FileTarget и перенести в него статические настройки, например категории.

Другие вопросы по тегам