Логирование из консоли и fronend

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
Аватара пользователя
Chelobaka
Сообщения: 126
Зарегистрирован: 2018.06.01, 09:54

Логирование из консоли и fronend

Сообщение Chelobaka » 2019.09.12, 17:57

Здравствуйте,

Есть общий конфиг для логов.

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

 'log' => [
            'targets' => [
                [
                    'class' => yii\log\FileTarget::class,
                    'levels' => ['error', 'warning'],
                    'logVars' => [],
                ],
                [
                    'class' => 'frontend\models\Log',
                    'categories' => ['vasya'],
                    'levels' => ['info', 'error'],
                    'logFile' => 'vasya/app.log',
                    'logVars' => [],
                ],
            ],
        ],
        
Есть метод который вызывает этот лог. Yii::info($log_data, 'vasya');

Когда запрос приходит из frontend то всё записывается, в concole выдаёт ошибку:

[warning][yii\log\Dispatcher::dispatch] Unable to send log via frontend\models\Log: Exception (Invalid Configuration) 'yii\base\InvalidConfigException' with message 'Unable to append to log file: /var/www/site.com/www/frontend/runtime/logs/vasya/app-2019-09-12.log'

Аватара пользователя
ElisDN
Сообщения: 5358
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

Re: Логирование из консоли и fronend

Сообщение ElisDN » 2019.09.12, 17:58

Логируйте из консоли в console.

Аватара пользователя
Chelobaka
Сообщения: 126
Зарегистрирован: 2018.06.01, 09:54

Re: Логирование из консоли и fronend

Сообщение Chelobaka » 2019.09.12, 18:02

ElisDN писал(а):
2019.09.12, 17:58
Логируйте из консоли в console.
Я бы и рад, но консоль обращается к сервису в другом месте. То есть во фронтенде сделан сервис по общению с АПИ и раз в час дергаю его что бы проверить статусы. И в самом сервисе пишутся логи всех обращений через этот сервис.

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

Но вообще это получается невозможно?

Аватара пользователя
Chelobaka
Сообщения: 126
Зарегистрирован: 2018.06.01, 09:54

Re: Логирование из консоли и fronend

Сообщение Chelobaka » 2019.09.12, 18:10

ElisDN писал(а):
2019.09.12, 17:58
Логируйте из консоли в console.
Понял вас, просто создал идентичный класс в консоли и всё заработало. Спасибо.

Аватара пользователя
Chelobaka
Сообщения: 126
Зарегистрирован: 2018.06.01, 09:54

Re: Логирование из консоли и fronend

Сообщение Chelobaka » 2019.09.16, 19:12

ElisDN писал(а):
2019.09.12, 17:58
Логируйте из консоли в console.
Дмитрий, еще раз спасибо за ваш ответ. Но как оказалось проблема была в правах.
Точнее когда я тестировал запуск консольной команды то выполнялось данное действие под моим юзером вместо www-data.
Но запустив крон данное действие отрабатывало на юзере www-data и всё работало исправно.

Проблема была в этом месте:

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

 if (($fp = @fopen($this->logFile, 'a')) === false) {
            throw new InvalidConfigException("Unable to append to log file: {$this->logFile}");
        }
        
Мне кажется тут нужно конкретнее указывать ошибку. Не могу записать, не существует файла и т.д.

Ответить