Страница 1 из 1
Log + DbTarget + info
Добавлено: 2021.05.10, 21:31
mikola123
Добрый день!
Подскажите, как точно настроить Logger. Я пытаюсь в логи выводить действия пользователя с помощью
Но в БД сыпется все подряд.
С одной стороны можно запретить выполнение в некоторых категориях типа:
Код: Выделить всё
'except' => [
'yii\db\Command::query',
'yii\db\Connection::open',
'yii\db\Command::execute'
],
Но не возникнут ли в данных категориях 'error' или 'warning'.
Вопрос как правильно использовать Yii::info() и может есть какой-то общий список категорий, которые надо заблокировать?
Может можно использовать другую функцию
Yii::userInfo();
Чтобы отделить логику фреймворка от бизнес процессов.
Re: Log + DbTarget + info
Добавлено: 2021.05.12, 13:57
vitalik1183
https://yiiframework.com.ua/ru/doc/guid ... g-messages
Для упрощения работы с сообщениями лога и их фильтрации, рекомендуется явно указывать подходящую категорию для каждого сообщения.
Регистрируйте в конфиге, например:
Код: Выделить всё
[
'class' => 'yii\log\FileTarget',
'exportInterval' => 1,
'levels' => [ 'info' ],
'categories' => [ 'lalala' ],
'logFile' => '@runtime/logs/lalala.log',
'logVars' => [],
],
И юзайте:
Re: Log + DbTarget + info
Добавлено: 2021.05.13, 22:35
mikola123
vitalik1183 писал(а): ↑2021.05.12, 13:57
https://yiiframework.com.ua/ru/doc/guid ... g-messages
Для упрощения работы с сообщениями лога и их фильтрации, рекомендуется явно указывать подходящую категорию для каждого сообщения.
Регистрируйте в конфиге, например:
Код: Выделить всё
[
'class' => 'yii\log\FileTarget',
'exportInterval' => 1,
'levels' => [ 'info' ],
'categories' => [ 'lalala' ],
'logFile' => '@runtime/logs/lalala.log',
'logVars' => [],
],
И юзайте:
В таком случае не будут работать 'levels' => ['error', 'warning']
Т.к. указана категория из которой необходимо собирать логи.
Если бы было так:
Код: Выделить всё
'categories' => ['info' => 'lalala', 'error' => '*', 'warning'=>'*']
Было бы хорошо
Re: Log + DbTarget + info
Добавлено: 2021.05.14, 02:21
Alexum
Можно настроить несколько типов файлов логов под разные цели.
Код: Выделить всё
// Пример для отдельного файла под каждого пользователя под IIS.
$infoFileName = strtolower(preg_replace("/[^a-z]/iu", '_', $_SERVER['AUTH_USER']));
$errorFileName = $infoFileName . '_' . date('Y_m_d');
...
...
...
'targets' => [
[
'class' => 'yii\log\FileTarget',
'levels' => ['info'],
'maxLogFiles' => 1,
'logFile' => '@runtime/logs/info/' . $infoFileName . '.log',
'except' => ['yii\db\*'],
],
[
'class' => 'yii\log\FileTarget',
'levels' => ['warning','error'],
'maxLogFiles' => 1,
'logFile' => '@runtime/logs/errors/' . $errorFileName . '.log',
],
Re: Log + DbTarget + info
Добавлено: 2021.05.14, 09:55
mikola123
Alexum писал(а): ↑2021.05.14, 02:21
Можно настроить несколько типов файлов логов под разные цели.
Код: Выделить всё
// Пример для отдельного файла под каждого пользователя под IIS.
$infoFileName = strtolower(preg_replace("/[^a-z]/iu", '_', $_SERVER['AUTH_USER']));
$errorFileName = $infoFileName . '_' . date('Y_m_d');
...
...
...
'targets' => [
[
'class' => 'yii\log\FileTarget',
'levels' => ['info'],
'maxLogFiles' => 1,
'logFile' => '@runtime/logs/info/' . $infoFileName . '.log',
'except' => ['yii\db\*'],
],
[
'class' => 'yii\log\FileTarget',
'levels' => ['warning','error'],
'maxLogFiles' => 1,
'logFile' => '@runtime/logs/errors/' . $errorFileName . '.log',
],
Спасибо! Это интересно, надо попробовать! Что-то я об этом и не подумал )
Re: Log + DbTarget + info
Добавлено: 2021.05.14, 12:15
vitalik1183
Спасибо! Это интересно, надо попробовать! Что-то я об этом и не подумал )
Я же вам это и предложил в своем сообщении!
В таком случае не будут работать 'levels' => ['error', 'warning']
Все будет работать, добавьте отдельный таргет и пишите туда Ваши сообщения. А 'error', 'warning' пусть сыплются по-дефолту!