Отладка хакни-запроса - PullRequest
1 голос
/ 07 мая 2019

Так что я делаю что-то вроде Logger.info "debug message" в оболочке удаленной консоли iex в приложении Elixir / Phoenix (это происходит только в оболочке удаленной консоли), которую я использую со сторонней службой журналирования.Я продолжал получать сообщение об ошибке в консоли после вызова Logger # info / 1:

    iex server-xxx 3> :gen_event handler Timber.LoggerBackends.HTTP installed in Logger terminating
** (exit) an exception was raised:
    ** (ArgumentError) argument error
        (stdlib) :ets.lookup_element(:hackney_config, :mod_metrics, 2)
        (hackney) /root/project/deps/hackney/src/hackney_metrics.erl:27: :hackney_metrics.get_engine/0
        (hackney) /root/project/deps/hackney/src/hackney_connect.erl:78: :hackney_connect.create_connection/5
        (hackney) /root/project/deps/hackney/src/hackney_connect.erl:47: :hackney_connect.connect/5
        (hackney) /root/project/deps/hackney/src/hackney.erl:330: :hackney.request/5
        (timber) lib/timber/logger_backends/http.ex:396: Timber.LoggerBackends.HTTP.transmit_buffer/2
        (timber) lib/timber/logger_backends/http.ex:211: Timber.LoggerBackends.HTTP.handle_info/2
        (stdlib) gen_event.erl:577: :gen_event.server_update/4

Я проследил это до этого запроса к Хакни (это Эрланг, и я не знаю многоо):

 :hackney.request(method, url, req_headers, body, req_opts)

end

Вот аргументы, которые я передаю с очищенным токеном аутентификации (взято из сеанса удаленной отладки):

    < _req_headers@1 = [{<<"Authorization">>,
                     <<"Basic MXXXXAUTH">>},
                    {<<"Content-Type">>,<<"application/msgpack">>},
                    {<<"User-Agent">>,<<"timber-elixir/">>}]
< _req_opts@1 = [{connect_timeout,5000},{recv_timeout,10000},{async,true}]
< _method@1 = post
< _headers@1 = #{<<"Authorization">> =>
                     <<"Basic MXXXXAUTH">>,
                 <<"Content-Type">> => <<"application/msgpack">>,
                 <<"User-Agent">> => <<"timber-elixir/">>}
< _url@1 = <<"https://logs.timber.io/frames">>
< _method@1 = post
< _headers@1 = #{<<"Authorization">> =>
                     <<"Basic MXXXXAUTH">>,
                 <<"Content-Type">> => <<"application/msgpack">>,
                 <<"User-Agent">> => <<"timber-elixir/">>}
< _body@1 = [145,
             [133,
              [[167|<<"context">>],
               130,
               [[167|<<"runtime">>],
                134,
                [[171|<<"application">>],192],
                [[164|<<"file">>],163|<<"iex">>],
                [[168|<<"function">>],192],
                [[164|<<"line">>],23],
                [[171|<<"module_name">>],192],
                [[166|<<"vm_pid">>],169|<<"<0.346.0>">>]],
               [[166|<<"system">>],
                130,
                [[168|<<"hostname">>],192],
                [[163|<<"pid">>]|<<"꼐">>]]],
              [[162|<<"dt">>],187|<<"2019-05-07T15:52:04.393107Z">>],
              [[165|<<"event">>],192],
              [[165|<<"level">>],164|<<"info">>],
              [[167|<<"message">>],166|<<"help 7">>]]]
< _req_headers@1 = [{<<"Authorization">>,
                     <<"Basic MXXXXAUTH">>},
                    {<<"Content-Type">>,<<"application/msgpack">>},
                    {<<"User-Agent">>,<<"timber-elixir/">>}]
< _body@1 = [145,
             [133,
              [[167|<<"context">>],
               130,
               [[167|<<"runtime">>],
                134,
                [[171|<<"application">>],192],
                [[164|<<"file">>],163|<<"iex">>],
                [[168|<<"function">>],192],
                [[164|<<"line">>],23],
                [[171|<<"module_name">>],192],
                [[166|<<"vm_pid">>],169|<<"<0.346.0>">>]],
               [[166|<<"system">>],
                130,
                [[168|<<"hostname">>],192],
                [[163|<<"pid">>]|<<"꼐">>]]],
              [[162|<<"dt">>],187|<<"2019-05-06T12:52:04.393107Z">>],
              [[165|<<"event">>],192],
              [[165|<<"level">>],164|<<"info">>],
              [[167|<<"message">>],166|<<"debug message">>]]]
< _req_headers@1 = [{<<"Authorization">>,
                     <<"Basic MXXXXAUTH">>},
                    {<<"Content-Type">>,<<"application/msgpack">>},
                    {<<"User-Agent">>,<<"timber-elixir/">>}]
< _req_opts@1 = [{connect_timeout,5000},{recv_timeout,10000},{async,true}]
< _req_opts@1 = [{connect_timeout,5000},{recv_timeout,10000},{async,true}]

Как определить «плохой аргумент», который вызывает проблему?Я довольно новичок в Erlang.

...