Взять за основу http://cpansearch.perl.org/src/SRI/Mojolicious-3.10/lib/Mojolicious/Plugin/RequestTimer.pm И допилить его нужным функционалом.
19 июля 2012 г., 15:41 пользователь Ivan Petrov <[email protected]> написал: >> Если с хуками не сложится, всегда можно решить проблему "в лоб": > >> 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 mailing list > [email protected] | http://moscow.pm.org -- Moscow.pm mailing list [email protected] | http://moscow.pm.org
