Логгирование в консольном приложении

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
Brainfuck
Сообщения: 313
Зарегистрирован: 2018.02.19, 14:20

Логгирование в консольном приложении

Сообщение Brainfuck »

Логгирование настроено в конфиге в базу, миграции есть и в остальном приложении все работает, но в консоли никак не выходит. Пишет ошибку

Unable to send log via yii\debug\LogTarget: Exception 'yii\base\UnknownMethodException' with message 'Calling unknown method: yii\console\Request::getAbsoluteUrl()'

Подскажите в чем проблема?
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Логгирование в консольном приложении

Сообщение zelenin »

пытаетесь логировать урл http-реквеста, а в консоли http вообще-то нет.
Brainfuck
Сообщения: 313
Зарегистрирован: 2018.02.19, 14:20

Re: Логгирование в консольном приложении

Сообщение Brainfuck »

zelenin писал(а): 2018.07.12, 16:48 пытаетесь логировать урл http-реквеста, а в консоли http вообще-то нет.
Не пытался. Это фреймворк что-то внутри пытается. Я лишь хотел сделать профилирование.
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Логгирование в консольном приложении

Сообщение zelenin »

Brainfuck писал(а): 2018.07.12, 16:53
zelenin писал(а): 2018.07.12, 16:48 пытаетесь логировать урл http-реквеста, а в консоли http вообще-то нет.
Не пытался. Это фреймворк что-то внутри пытается
угу, самообучающийся робот.
Brainfuck
Сообщения: 313
Зарегистрирован: 2018.02.19, 14:20

Re: Логгирование в консольном приложении

Сообщение Brainfuck »

zelenin писал(а): 2018.07.12, 16:54 угу, самообучающийся робот.
Окей. Вот код метода. Вы видите где-то тут какие-то http-запросы?

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

public function actionTest() {
	Yii::beginProfile('test');
	Article::findOne(1);
	Yii::endProfile('test');
}
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Логгирование в консольном приложении

Сообщение zelenin »

Brainfuck писал(а): 2018.07.12, 16:58
zelenin писал(а): 2018.07.12, 16:54 угу, самообучающийся робот.
Окей. Вот код метода. Вы видите где-то тут какие-то http-запросы?

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

public function actionTest() {
	Yii::beginProfile('test');
	Article::findOne(1);
	Yii::endProfile('test');
}
посмотри на текст ошибки и на ее трейс - код, в котором ошибка там.
Brainfuck
Сообщения: 313
Зарегистрирован: 2018.02.19, 14:20

Re: Логгирование в консольном приложении

Сообщение Brainfuck »

zelenin писал(а): 2018.07.12, 17:01 посмотри на текст ошибки и на ее трейс - код, в котором ошибка там.

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

Unable to send log via yii\debug\LogTarget: Exception 'yii\base\UnknownMethodException' with message 'Calling unknown method: yii\console\Request::getAbsoluteUrl()' 

in \vendor\yiisoft\yii2\base\Component.php:300

Stack trace:
#0 \vendor\yiisoft\yii2-debug\LogTarget.php(162): yii\base\Component->__call('getAbsoluteUrl', Array)
#1 \vendor\yiisoft\yii2-debug\LogTarget.php(50): yii\debug\LogTarget->collectSummary()
#2 \vendor\yiisoft\yii2-debug\LogTarget.php(125): yii\debug\LogTarget->export()
#3 \vendor\yiisoft\yii2\log\Dispatcher.php(189): yii\debug\LogTarget->collect(Array, true)
#4 \vendor\yiisoft\yii2\log\Logger.php(177): yii\log\Dispatcher->dispatch(Array, true)
#5 [internal function]: yii\log\Logger->flush(true)
#6 {main}
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Логгирование в консольном приложении

Сообщение zelenin »

#0 \vendor\yiisoft\yii2-debug\LogTarget.php(162): yii\base\Component->__call('getAbsoluteUrl', Array)

у вас включена дебаг панель, которая собирает данные о http-реквесте.
Brainfuck
Сообщения: 313
Зарегистрирован: 2018.02.19, 14:20

Re: Логгирование в консольном приложении

Сообщение Brainfuck »

zelenin писал(а): 2018.07.12, 17:09 #0 \vendor\yiisoft\yii2-debug\LogTarget.php(162): yii\base\Component->__call('getAbsoluteUrl', Array)

у вас включена дебаг панель, которая собирает данные о http-реквесте.
Нет. Вот конфиг консоли

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

<?php
$params = array_merge(
    require(__DIR__ . '/../../common/config/params.php'),
    require(__DIR__ . '/../../common/config/params-local.php'),
    require(__DIR__ . '/params.php'),
    require(__DIR__ . '/params-local.php')
);

return [
    'id' => 'app-console',
    'basePath' => dirname(__DIR__),
    'bootstrap' => ['log'],
    'controllerNamespace' => 'console\controllers',
    'controllerMap' => [
        'fixture' => [
            'class' => 'yii\console\controllers\FixtureController',
            'namespace' => 'common\fixtures',
          ],
    ],
    'components' => [
        'log' => [
            'targets' => [
                'db' => [
                    'class' => 'yii\log\DbTarget',
                    'levels' => ['error', 'warning', 'trace'],
                ],
            ],
        ],
    ],
    'params' => $params,
];
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Логгирование в консольном приложении

Сообщение zelenin »

ну как нет? я четко вижу в пути до файла "yii2-debug". Поправьте меня, если зрение мне изменяет.
Сам фреймворк как мы видим тут https://github.com/yiisoft/yii2-framewo ... r.json#L65 от дебаг-панели не зависит и точно внутри себя ее нигде не вызывает.
Brainfuck
Сообщения: 313
Зарегистрирован: 2018.02.19, 14:20

Re: Логгирование в консольном приложении

Сообщение Brainfuck »

zelenin писал(а): 2018.07.12, 17:18 ну как нет? я четко вижу в пути до файла "yii2-debug". Поправьте меня, если зрение мне изменяет.
Сам фреймворк как мы видим тут https://github.com/yiisoft/yii2-framewo ... r.json#L65 от дебаг-панели не зависит и точно внутри себя ее нигде не вызывает.
А я четко вижу свой конфиг который и вам кстати виден теперь. В нем нет подключения дебаг-панели. Я без понятия откуда она там берется.
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Логгирование в консольном приложении

Сообщение zelenin »

Brainfuck писал(а): 2018.07.12, 17:19
zelenin писал(а): 2018.07.12, 17:18 ну как нет? я четко вижу в пути до файла "yii2-debug". Поправьте меня, если зрение мне изменяет.
Сам фреймворк как мы видим тут https://github.com/yiisoft/yii2-framewo ... r.json#L65 от дебаг-панели не зависит и точно внутри себя ее нигде не вызывает.
А я четко вижу свой конфиг который и вам кстати виден теперь. В нем нет подключения дебаг-панели. Я без понятия откуда она там берется.
вариантов подключения компонентов больше одного. суть одна: в вашем приложении выполняется вот этот код https://github.com/yiisoft/yii2-debug/b ... e.php#L194
Сам Yii это абсолютно точно не делает.
Brainfuck
Сообщения: 313
Зарегистрирован: 2018.02.19, 14:20

Re: Логгирование в консольном приложении

Сообщение Brainfuck »

zelenin писал(а): 2018.07.12, 17:34 вариантов подключения компонентов больше одного. суть одна: в вашем приложении выполняется вот этот код https://github.com/yiisoft/yii2-debug/b ... e.php#L194
Сам Yii это абсолютно точно не делает.
Т.е. идей у вас нет? :)
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Логгирование в консольном приложении

Сообщение zelenin »

Brainfuck писал(а): 2018.07.12, 17:35
zelenin писал(а): 2018.07.12, 17:34 вариантов подключения компонентов больше одного. суть одна: в вашем приложении выполняется вот этот код https://github.com/yiisoft/yii2-debug/b ... e.php#L194
Сам Yii это абсолютно точно не делает.
Т.е. идей у вас нет? :)
ну как? я же сказал - в вашем приложении используется дебаг-панель. Дебаг-панель работает для http, а в консоли нет. Место в котором у вас подключается дебаг-панель я найти не могу, т.к. доступа к вашему коду у меня нет.
Есть ли у меня идеи? Ну если вам не факты, а идеи нужны, то как вам эти:
- давайте вы поищите в коде подключение дебага
- давайте вы продебажите рантайм приложения для определения на какой стадии в $app->getLog()->targets записывается debug
- давайте вы выложите код приложения желательно со сценарием воспроизведения ошибки для страждущих за вас поискать
Brainfuck
Сообщения: 313
Зарегистрирован: 2018.02.19, 14:20

Re: Логгирование в консольном приложении

Сообщение Brainfuck »

Ничего не понимаю... Я выключил дебаг-панель в common/main-local.php и ошибка пропала. Но ни console/main.php ни console/main-local.php не подтягивают тот конфиг...
Brainfuck
Сообщения: 313
Зарегистрирован: 2018.02.19, 14:20

Re: Логгирование в консольном приложении

Сообщение Brainfuck »

Все отбой - я понял. Общий конфиг подтягивается в файле yii. Тот самый через который я запускаю консольное приложение. Я знал что в common/main-local.php есть подключение панели, но не думал что это влияет на консольное приложение.
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Логгирование в консольном приложении

Сообщение zelenin »

Brainfuck писал(а): 2018.07.12, 17:43 Ничего не понимаю... Я выключил дебаг-панель в common/main-local.php и ошибка пропала. Но ни console/main.php ни console/main-local.php не подтягивают тот конфиг...
я думаю вы не в ту точку входа смотрите, и соответственно не те конфиги определяете как рабочие в текущем моменте
Ответить