Так что я делаю что-то вроде 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.