Как динамически установить путь к 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 и перенести в него статические настройки, например категории.