[Moscow.pm] Mojo: логгирование запросов
Ivan Petrov
i.petro.77.00 на gmail.com
Чт Июл 19 04:41:45 PDT 2012
> Если с хуками не сложится, всегда можно решить проблему "в лоб":
> 1. Старый хендлер переименовываем из blabla_handler например в
> blabla_handler_raw
> 2. В blabla_handler_raw делаем минимальные изменения - нужно вернуть или
> положить в стэш кодификатор, строку или типа того, по которому мы узнаем, что
> было возвращено
> 3. В новом blabla_handler пишем обертку с замером времени и записью в лог
вопрос с замером времени можно сделать прямо из бриджа, как-то так:
sub do_log {
my ($self) = @_;
my $req_body = $self->req->to_string;
my $started_time = time;
$self->stash('guard' => guard { save_log $req_body, time -
$started_time });
return 1;
}
поскольку в конце Mojo почистит стеши то и гуард выдернется.
но это выглядит как хак.
если копать в сторону хуков, то можно опять же нужным контроллерам в
стеш класть пометку какую-то а в хуке смотреть есть ли такая пометка и
если есть класть в лог вместе со временем.
но это опять выглядит как хак
> (А может лучше рассмотреть возможность изменить проект так, чтобы он был такой
> весь из себя RESTfull и по url + коду возврата становилось ясно, что
> спрашивалось и что получили?)
да в общем-то так и есть.
логгирование нужно чисто для *временного* мониторинга что и как происходит.
примерно так: пришел багрепорт что вот этот роут выдает чет не то, с
точки зрения клиента. у нас роут покрыт тестами довольно хорошо,
соответственно нужен анализ действительно ли там что-то "не то", в каких
случаях это "не то" и т п. мы ставим данный роут на логгирование и
сабмитер бага пытается его повторить, ну а далее разбираются логи
запросов (и вот теперь еще хотим и логи ответов). после разбора
полетов случай попадает в тесты, логгирование на роут убирается
соответственно из задачи вытекает что модифицировать контроллеры
совсем не хочется.
Подробная информация о списке рассылки Moscow-pm