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

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

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

Сообщение Brainfuck » 2018.07.12, 16:38

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

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 » 2018.07.12, 16:48

пытаетесь логировать урл http-реквеста, а в консоли http вообще-то нет.

Brainfuck
Сообщения: 172
Зарегистрирован: 2018.02.19, 14:20

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

Сообщение Brainfuck » 2018.07.12, 16:53

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

zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

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

Сообщение zelenin » 2018.07.12, 16:54

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

Brainfuck
Сообщения: 172
Зарегистрирован: 2018.02.19, 14:20

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

Сообщение 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');
}

zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

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

Сообщение zelenin » 2018.07.12, 17:01

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
Сообщения: 172
Зарегистрирован: 2018.02.19, 14:20

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

Сообщение Brainfuck » 2018.07.12, 17:03

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 » 2018.07.12, 17:09

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

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

Brainfuck
Сообщения: 172
Зарегистрирован: 2018.02.19, 14:20

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

Сообщение Brainfuck » 2018.07.12, 17:10

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 » 2018.07.12, 17:18

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

Brainfuck
Сообщения: 172
Зарегистрирован: 2018.02.19, 14:20

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

Сообщение Brainfuck » 2018.07.12, 17:19

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 » 2018.07.12, 17:34

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
Сообщения: 172
Зарегистрирован: 2018.02.19, 14:20

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

Сообщение Brainfuck » 2018.07.12, 17:35

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 » 2018.07.12, 17:41

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
Сообщения: 172
Зарегистрирован: 2018.02.19, 14:20

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

Сообщение Brainfuck » 2018.07.12, 17:43

Ничего не понимаю... Я выключил дебаг-панель в common/main-local.php и ошибка пропала. Но ни console/main.php ни console/main-local.php не подтягивают тот конфиг...

Brainfuck
Сообщения: 172
Зарегистрирован: 2018.02.19, 14:20

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

Сообщение Brainfuck » 2018.07.12, 17:45

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

zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

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

Сообщение zelenin » 2018.07.12, 17:46

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

Ответить