логирование ответов запросов к API

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
an.viktory@gmail.com
Сообщения: 536
Зарегистрирован: 2016.09.05, 23:21

логирование ответов запросов к API

Сообщение an.viktory@gmail.com »

Добрый день. Подскажите как сделать так чтобы я мог например логировать запросы которые идут к API и ответы которые я посылаю.
Я так понимаю что данных функционал надо прикрутить в конфиге beforeRequest и afterRequest подскажите чтобы не велосипедить
yiiliveext
Сообщения: 910
Зарегистрирован: 2019.08.13, 01:49

Re: логирование ответов запросов к API

Сообщение yiiliveext »

В модуле

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

public function beforeAction($action)
{
    Yii::debug('Request: ' . Yii::$app->getRequest()->getUrl(), 'api');
    return parent::beforeAction($action);
}

public function afterAction($action, $result)
{
    Yii::debug('Result: ' . json_encode($result), 'api');
    return parent::afterAction($action, $result);
}
Аватара пользователя
Chelobaka
Сообщения: 214
Зарегистрирован: 2018.06.01, 09:54

Re: логирование ответов запросов к API

Сообщение Chelobaka »

можно еще попробовать через встроенный логер. yii::info('message', 'your_category');
Будет писать в файлы что логично. Так как база будет рости, дамп будет рости. А файлы можно затирать время от времени сохраняя у себя на локальной машине.
yiiliveext
Сообщения: 910
Зарегистрирован: 2019.08.13, 01:49

Re: логирование ответов запросов к API

Сообщение yiiliveext »

debug я для примера привел. Писать можно куда и как душе угодно.
Аватара пользователя
Chelobaka
Сообщения: 214
Зарегистрирован: 2018.06.01, 09:54

Re: логирование ответов запросов к API

Сообщение Chelobaka »

an.viktory@gmail.com писал(а): 2019.09.10, 11:30 Добрый день. Подскажите как сделать так чтобы я мог например логировать запросы которые идут к API и ответы которые я посылаю.
Я так понимаю что данных функционал надо прикрутить в конфиге beforeRequest и afterRequest подскажите чтобы не велосипедить
Думаю лучше всего сделать класс Transport с методом send(). И для всех запросов создавать его через dto обьект со всеми нужными параметрами запроса.
То есть вызов api:

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

$transport = new Transport($dto);

Transport

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

$transport->getPrice();
{
    $dto->prepareDataForPriceRequest();
    $this->send();

}

send() {
    $log_data = [ тут твои данные ]; Например $dto->toArray();
    Внутри метода сделать  Yii::info($log_data, 'your_name');
}
в конфиге:

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

     'log' => [
            'traceLevel' => YII_DEBUG ? 3 : 0,
            'targets' => [
                [
                    'class' => 'yii\log\FileTarget',
                    'levels' => ['error', 'warning'],
                ],
                [
                    'class' => 'yii\log\FileTarget', - Но можно сделать свой класс, если например ты хочешь писать файлы по дням с датой в имени, 
                    'categories' => ['your_name'],
                    'levels' => ['info', 'error'],
                    'logFile' => 'your_name/app.log', // папка лога
                    'logVars' => [],
                ],
            ],

        ],
Кешировать можно в множество мест: База, файлы, оперативная память ... https://www.yiiframework.com/doc/api/2. ... einterface.
Ответить