Запись логов по папкам

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
dsolomon
Сообщения: 7
Зарегистрирован: 2017.12.07, 16:56

Запись логов по папкам

Сообщение dsolomon »

Доброго времени суток!
Мне необходимо реализовать запись логов в различные папки.
Например:
Я отправляю xml через curl-запрос, мне надо записать в отдельный файл лога этот xml.
Мне приходит ответ и его тоже надо записать в отдельный лог файл.
При этом файлы надо распределить в папки runtime/log/действие/год/месяц/день/имя_файла
Есть ли в Yii возможность реализовать то, что мне нужно?

Спасибо!
Аватара пользователя
Alexum
Сообщения: 683
Зарегистрирован: 2016.09.26, 10:00

Re: Запись логов по папкам

Сообщение Alexum »

Можно в конфиге настроить отдельные пути для разных категорий сообщений.

Код: Выделить всё

...
'components' => [
        'log' => [
            'targets' => [
                [
                    'class' => 'yii\log\FileTarget',
                    'levels' => ['error', 'warning'],
                ],
                [
                    'class' => 'yii\log\FileTarget',
                    'logFile' => '@runtime/logs/rollback.log',
                    'levels' => ['info'],
                    'categories' => ['rollback*'],
                    'logVars' => [],
                    'maxFileSize' => 1024,
                    'maxLogFiles' => 20,
                ],
                ....
В самом коде вызывать запись сообщений и указывать категорию

Код: Выделить всё

...
Yii::info(implode("\n", $sqlRollback), 'rollback');
...
Динамически собрать имя для параметра 'logFile' думаю сумеете.
dsolomon
Сообщения: 7
Зарегистрирован: 2017.12.07, 16:56

Re: Запись логов по папкам

Сообщение dsolomon »

Спасибо большое! :-)
Alexum писал(а): 2018.07.26, 17:04 Динамически собрать имя для параметра 'logFile' думаю сумеете.
С использованием в качестве имени лог файла даты проблем, конечно, не возникло.
Вопрос в том, как задавать каждому файлу лога отдельное имя в зависимости от ответа на мой запрос.

Пробовал вот такое:

Код: Выделить всё

$logger = new FileTarget();
$logger->logFile = Yii::getAlias('@app/').'path/to/my_log_forder/'.date("Y").'/'.date("m").'/'.'log_name.log';
Файл лога создался, а вот как теперь туда положить информацию?
Ответить