Логгирование в API на Grape

Александр Борисов, 21 января 2015

Вывод в консоль во время работы эндпоинта Grape непривычно беден после использования Рельс:

Started GET "/api/v1/games" for 127.0.0.1 at 2015-01-21 16:37:12 +0300
  Game Load (0.6ms)  SELECT "games".* FROM "games"   ORDER BY "games"."created_at" DESC

Не хватает заголовков и тела запроса, строки кода, с которой началась обработка запроса, заголовков и тела ответа и примерного времени выполнения запроса:

Started GET "/api/v1/games?limit=10" for 127.0.0.1 at 2015-01-21 16:39:39 +0300

[api] Started GET "/v1/games" for 127.0.0.1 at 2015-01-21 16:39:39 +0300
[api] Request headers: ["ACCEPT: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8", "ACCEPT_ENCODING: gzip, deflate, sdch", "ACCEPT_LANGUAGE: ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4,de;q=0.2,es;q=0.2,bg;q=0.2,sr;q=0.2", "CONNECTION: keep-alive", "HOST: 0.0.0.0:3000", "USER_AGENT: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.99 Safari/537.36", "VERSION: HTTP/1.1"]
[api] Request body:
[api] Source: app/controllers/api/v1/games_api.rb:8
  Game Load (0.6ms)  SELECT "games".* FROM "games"   ORDER BY "games"."created_at" DESC
[api] Response headers: {"Content-Type"=>"application/json; charset=utf-8", "Content-Length"=>"944"}
[api] Response body: {"games":[{"id":10,"name":"йпроверка автосохранения","description":"а","state_name":"open","created_at":1411368316,"updated_at":1411384461},{"id":9,"name":"asd2d32","description":"ыва","state_name":"open","created_at":1411368054,"updated_at":1411368296},{"id":8,"name":"123233d","description":"","state_name":"open","created_at":1411367421,"updated_at":1411367421},{"id":4,"name":"123233","description":"","state_name":"open","created_at":1411367207,"updated_at":1411367207},{"id":3,"name":"игра2","description":"213","state_name":"open","created_at":1410785597,"updated_at":1410785610},{"id":2,"name":"тестовая игра","description":"привет!","state_name":"running","created_at":1410528295,"updated_at":1410859000},{"id":1,"name":"Тестовая игра из API v0","description":"Супер-пупер-мега игра","state_name":"open","created_at":1410527999,"updated_at":1410527999}]}
[api] Completed 200 in 6ms

Эту информацию можно добавить в вывод, используя такой класс логгера:


В следующей статье я поделюсь общими соображениями при создании API.

Смотрите также


comments powered by Disqus
Блог Цифрономики

Мысли о веб-разработке на Ruby on Rails: работа с кодом, приёмы, инструменты, организация процесса разработки.

@cifronomika
RSS


Веб-разработка на Ruby on Rails, реализация сложных проектов
mailbox@cifronomika.ru
+7 (910) 535-99-11