Elixir 是否正在解决记录器后端的应用程序启动错误及其某个依赖项未初始化?

Elixir 是否正在解决记录器后端的应用程序启动错误及其某个依赖项未初始化?,elixir,Elixir,我正在应用程序中使用此记录器后端: 在应用程序的mix.exs文件中,在应用程序函数中,:logger\u logstash\u backend包含在:applications键中(在它所依赖的:timex之后) 当我通过iex-S mix启动我的应用程序时,我看到很多错误,如以下所示: 15:49:48.306 registered_name=Logger function=report_error/5 module=gen_event line=747 file=gen_event.e

我正在应用程序中使用此
记录器
后端:

在应用程序的
mix.exs
文件中,在
应用程序
函数中,
:logger\u logstash\u backend
包含在
:applications
键中(在它所依赖的
:timex
之后)

当我通过iex-S mix启动我的应用程序时,我看到很多错误,如以下所示:

15:49:48.306 registered_name=Logger function=report_error/5 module=gen_event line=747 file=gen_event.erl pid=<0.2656.0> [error] :gen_event handler {LoggerLogstashBackend, :logstash_log} installed in Logger terminating
** (ArgumentError) argument error
    (stdlib) :ets.lookup(:tzdata_current_release, :release_version)
    lib/tzdata/release_reader.ex:74: Tzdata.ReleaseReader.current_release_from_table/0
    lib/tzdata/release_reader.ex:17: Tzdata.ReleaseReader.simple_lookup/1
    lib/tzdata/release_reader.ex:9: Tzdata.ReleaseReader.zone_and_link_list/0
    lib/tzdata.ex:61: Tzdata.zone_exists?/1
    lib/timezone/timezone.ex:358: Timex.Timezone.resolve/3
    lib/logger_logstash_backend.ex:73: LoggerLogstashBackend.log_event/5
    lib/logger_logstash_backend.ex:40: LoggerLogstashBackend.handle_event/2
    (stdlib) gen_event.erl:577: :gen_event.server_update/4
    (stdlib) gen_event.erl:559: :gen_event.server_notify/4
    (stdlib) gen_event.erl:561: :gen_event.server_notify/4
    (stdlib) gen_event.erl:300: :gen_event.handle_msg/6
    (stdlib) proc_lib.erl:249: :proc_lib.init_p_do_apply/3
Last message: {:info, #PID<0.63.0>, {Logger, ["Application ", "logger", " started at " | ":nonode@nohost"], {{2020, 1, 6}, {15, 49, 48, 224}}, [function: "info_started/2", module: :application_controller, line: 1926, file: "application_controller.erl", pid: #PID<0.43.0>]}}
State: %{ex_jsx_opts: [:uescape], host: '127.0.0.1', level: :info, metadata: [], name: :logstash_log, port: 4201, socket: #Port<0.2458>, type: "elixir"}

15:49:48.307 function=error_info/7 module=gen_server line=888 file=gen_server.erl pid=<0.2659.0> [error] GenServer #PID<0.2659.0> terminating
** (stop) {:EXIT, {:badarg, [{:ets, :lookup, [:tzdata_current_release, :release_version], []}, {Tzdata.ReleaseReader, :current_release_from_table, 0, [file: 'lib/tzdata/release_reader.ex', line: 74]}, {Tzdata.ReleaseReader, :simple_lookup, 1, [file: 'lib/tzdata/release_reader.ex', line: 17]}, {Tzdata.ReleaseReader, :zone_and_link_list, 0, [file: 'lib/tzdata/release_reader.ex', line: 9]}, {Tzdata, :zone_exists?, 1, [file: 'lib/tzdata.ex', line: 61]}, {Timex.Timezone, :resolve, 3, [file: 'lib/timezone/timezone.ex', line: 358]}, {LoggerLogstashBackend, :log_event, 5, [file: 'lib/logger_logstash_backend.ex', line: 73]}, {LoggerLogstashBackend, :handle_event, 2, [file: 'lib/logger_logstash_backend.ex', line: 40]}, {:gen_event, :server_update, 4, [file: 'gen_event.erl', line: 577]}, {:gen_event, :server_notify, 4, [file: 'gen_event.erl', line: 559]}, {:gen_event, :server_notify, 4, [file: 'gen_event.erl', line: 561]}, {:gen_event, :handle_msg, 6, [file: 'gen_event.erl', line: 300]}, {:proc_lib, :init_p_do_apply, 3, [file: 'proc_lib.erl', line: 249]}]}}
Last message: {:gen_event_EXIT, {LoggerLogstashBackend, :logstash_log}, {:EXIT, {:badarg, [{:ets, :lookup, [:tzdata_current_release, :release_version], []}, {Tzdata.ReleaseReader, :current_release_from_table, 0, [file: 'lib/tzdata/release_reader.ex', line: 74]}, {Tzdata.ReleaseReader, :simple_lookup, 1, [file: 'lib/tzdata/release_reader.ex', line: 17]}, {Tzdata.ReleaseReader, :zone_and_link_list, 0, [file: 'lib/tzdata/release_reader.ex', line: 9]}, {Tzdata, :zone_exists?, 1, [file: 'lib/tzdata.ex', line: 61]}, {Timex.Timezone, :resolve, 3, [file: 'lib/timezone/timezone.ex', line: 358]}, {LoggerLogstashBackend, :log_event, 5, [file: 'lib/logger_logstash_backend.ex', line: 73]}, {LoggerLogstashBackend, :handle_event, 2, [file: 'lib/logger_logstash_backend.ex', line: 40]}, {:gen_event, :server_update, 4, [file: 'gen_event.erl', line: 577]}, {:gen_event, :server_notify, 4, [file: 'gen_event.erl', line: 559]}, {:gen_event, :server_notify, 4, [file: 'gen_event.erl', line: 561]}, {:gen_event, :handle_msg, 6, [file: 'gen_event.erl', line: 300]}, {:proc_lib, :init_p_do_apply, 3, [file: 'proc_lib.erl', line: 249]}]}}}
State: {Logger, {LoggerLogstashBackend, :logstash_log}}

15:49:48.315 initial_call=Logger.Watcher.init/1 function=crash_report/4 module=proc_lib line=508 file=proc_lib.erl pid=<0.2659.0> [error] Process #PID<0.2659.0> terminating
** (exit) {:EXIT, {:badarg, [{:ets, :lookup, [:tzdata_current_release, :release_version], []}, {Tzdata.ReleaseReader, :current_release_from_table, 0, [file: 'lib/tzdata/release_reader.ex', line: 74]}, {Tzdata.ReleaseReader, :simple_lookup, 1, [file: 'lib/tzdata/release_reader.ex', line: 17]}, {Tzdata.ReleaseReader, :zone_and_link_list, 0, [file: 'lib/tzdata/release_reader.ex', line: 9]}, {Tzdata, :zone_exists?, 1, [file: 'lib/tzdata.ex', line: 61]}, {Timex.Timezone, :resolve, 3, [file: 'lib/timezone/timezone.ex', line: 358]}, {LoggerLogstashBackend, :log_event, 5, [file: 'lib/logger_logstash_backend.ex', line: 73]}, {LoggerLogstashBackend, :handle_event, 2, [file: 'lib/logger_logstash_backend.ex', line: 40]}, {:gen_event, :server_update, 4, [file: 'gen_event.erl', line: 577]}, {:gen_event, :server_notify, 4, [file: 'gen_event.erl', line: 559]}, {:gen_event, :server_notify, 4, [file: 'gen_event.erl', line: 561]}, {:gen_event, :handle_msg, 6, [file: 'gen_event.erl', line: 300]}, {:proc_lib, :init_p_do_apply, 3, [file: 'proc_lib.erl', line: 249]}]}}
    (stdlib) gen_server.erl:751: :gen_server.handle_common_reply/8
    (stdlib) proc_lib.erl:249: :proc_lib.init_p_do_apply/3
Initial Call: Logger.Watcher.init/1
Ancestors: [Logger.BackendSupervisor, Logger.Supervisor, #PID<0.2654.0>]
Message Queue Length: 0
Messages: []
Links: [#PID<0.2658.0>, #PID<0.2656.0>]
Dictionary: []
Trapping Exits: true
Status: :running
Heap Size: 4185
Stack Size: 27
Reductions: 57169

15:49:48.316 function=do_restart/3 module=supervisor line=713 file=supervisor.erl pid=<0.2658.0> [error] Child {LoggerLogstashBackend, :logstash_log} of Supervisor Logger.BackendSupervisor terminated
** (exit) {:EXIT, {:badarg, [{:ets, :lookup, [:tzdata_current_release, :release_version], []}, {Tzdata.ReleaseReader, :current_release_from_table, 0, [file: 'lib/tzdata/release_reader.ex', line: 74]}, {Tzdata.ReleaseReader, :simple_lookup, 1, [file: 'lib/tzdata/release_reader.ex', line: 17]}, {Tzdata.ReleaseReader, :zone_and_link_list, 0, [file: 'lib/tzdata/release_reader.ex', line: 9]}, {Tzdata, :zone_exists?, 1, [file: 'lib/tzdata.ex', line: 61]}, {Timex.Timezone, :resolve, 3, [file: 'lib/timezone/timezone.ex', line: 358]}, {LoggerLogstashBackend, :log_event, 5, [file: 'lib/logger_logstash_backend.ex', line: 73]}, {LoggerLogstashBackend, :handle_event, 2, [file: 'lib/logger_logstash_backend.ex', line: 40]}, {:gen_event, :server_update, 4, [file: 'gen_event.erl', line: 577]}, {:gen_event, :server_notify, 4, [file: 'gen_event.erl', line: 559]}, {:gen_event, :server_notify, 4, [file: 'gen_event.erl', line: 561]}, {:gen_event, :handle_msg, 6, [file: 'gen_event.erl', line: 300]}, {:proc_lib, :init_p_do_apply, 3, [file: 'proc_lib.erl', line: 249]}]}}
Pid: #PID<0.2659.0>
Start Call: Logger.Watcher.start_link({Logger, {LoggerLogstashBackend, :logstash_log}, {LoggerLogstashBackend, :logstash_log}})
Restart: :transient
Shutdown: 5000
Type: :worker

15:49:48.316 function=report_progress/2 module=supervisor line=1419 file=supervisor.erl pid=<0.2658.0> [info]  Child {LoggerLogstashBackend, :logstash_log} of Supervisor Logger.BackendSupervisor started
Pid: #PID<0.2678.0>
Start Call: Logger.Watcher.start_link({Logger, {LoggerLogstashBackend, :logstash_log}, {LoggerLogstashBackend, :logstash_log}})
Restart: :transient
Shutdown: 5000
Type: :worker
15:49:48.306 registered_name=Logger function=report_error/5 module=gen_event line=747 file=gen_event.erl pid=[error]:安装在Logger中的gen_事件处理程序{LoggerLogstashBackend,:logstash_log}
**(ArgumentError)参数错误
(stdlib):ets.lookup(:tzdata\u current\u release,:release\u version)
lib/tzdata/release\u reader.ex:74:tzdata.ReleaseReader.current\u release\u from\u table/0
lib/tzdata/release_reader.ex:17:tzdata.ReleaseReader.simple_lookup/1
lib/tzdata/release\u reader.ex:9:tzdata.ReleaseReader.zone\u和链接\u列表/0
lib/tzdata.ex:61:tzdata.zone_是否存在?/1
lib/timezone/timezone.ex:358:Timex.timezone.resolve/3
lib/logger\u logstash\u backend.ex:73:LoggerLogstashBackend.log\u事件/5
lib/logger\u logstash\u backend.ex:40:LoggerLogstashBackend.handle\u事件/2
(stdlib)gen_event.erl:577::gen_event.server_update/4
(stdlib)gen_event.erl:559::gen_event.server_notify/4
(stdlib)gen_event.erl:561::gen_event.server_notify/4
(stdlib)gen_event.erl:300::gen_event.handle_msg/6
(stdlib)proc_lib.erl:249::proc_lib.init_p_do_apply/3
最后一条消息:{:info,#PID,{Logger,[“应用程序”,“记录器”,“开始于”|]:nonode@nohost“],{2020,1,6},{15,49,48,224},[函数:“info_start/2”,模块::应用程序控制器,行:1926,文件:“application_controller.erl”,pid:#pid]}”
状态:%{ex_jsx_opts:[:uescape],主机:'127.0.0.1',级别::信息,元数据:[],名称::日志,端口:4201,套接字:#端口,类型:“elixir”}
15:49:48.307 function=error_info/7 module=gen_server line=888 file=gen_server.erl pid=[error]GenServer#pid终止
**(停止){:EXIT,{:badarg,[{:ets,:lookup,[:tzdata\u current\u release,:ReleaseReader,{tzdata.ReleaseReader,:current\u release\u from\u table,0,[文件:'lib/tzdata/release\u reader.ex',行:74]},{tzdata.ReleaseReader,:simple\u查找,1,[文件:'lib/tzdata/tzdata/ReleaseReader.ex',行:17]},{tzdata.ReleaseReader,:区域和链接列表,0,[文件:'lib/tzdata/release_reader.ex',行:9]},{tzdata,:zone_exists?,[1]文件:'lib/tzdata.ex',行:61]},{Timex.Timezone,:resolve,3,[文件:'lib/Timezone/Timezone/Timezone.ex',行:358]},{LoggerLogstashBackend,:log_事件,5,[文件:'lib/logger_logstash_后端,行:73]},{loggerstashbackend,:handle事件,2,],[文件:'lib/logger_logstash_backend.ex',行:40]},{:gen_event,:server_update,4,[文件:'gen_event.erl',行:577]},{:gen_event,:server_event.erl',4,{:gen gen u event,:561]},{:gen gen gen event.erl',handle msg,6,[文件:'gen u event.erl',300]},{:proc_lib,:init_p_do_apply,3,[文件:'proc_lib.erl',行:249]}
最后一条消息:{:gen_event_EXIT,{LoggerLogstashBackend,:logstash_log},{:EXIT,{:badarg,[{:ets,:lookup,[:tzdata_current_release,:release,},{tzdata.ReleaseReader,:current_release_from_table,0,[文件:'lib/tzdata/release_reader.ex',行:74]},{tzdata.ReleaseReader,:simple_lookup,1,[文件:'lib/tzdata/release\u reader.ex',行:17]},{tzdata.ReleaseReader,:zone\u和_link\u列表,0,[file:'lib/tzdata/release\u reader.ex',行:9]},{tzdata,:zone\u exists?,[file:'lib/tzdata.ex',行:61]},{Timex.Timezone,:resolve,3,[file:'lib Timezone/Timezone/Timezone/Timezone.ex',行:358]},{LoggerLogstashBackend,:log\u事件,5,[文件:'lib/logger_logstash_backend.ex',行:73]},{LoggerLogstashBackend,:handle_事件,2,[文件:'lib/logger_logstash_backend.ex',行:40]},{:gen_事件,:server_更新,4,[文件:'gen_event.erl',行:577]},{:gen server_通知,4,[文件:'gen event.erl',559]},{:gen gen u事件,:server_通知,4,[文件:'gen_event.erl',行:561]},{:gen_event,:handle_msg,6,[文件:'gen_event.erl',行:300]},{:proc_lib,:init_p_do_apply,3,[文件:'proc_lib.erl',行:249]}}
状态:{Logger,{LoggerLogstashBackend,:logstash_log}
15:49:48.315 initial_call=Logger.Watcher.init/1 function=crash_report/4 module=proc_lib line=508 file=proc_lib.erl pid=[error]进程#pid终止
**(exit){:exit,{:badarg,[{:ets,:lookup,[:tzdata\u current\u release,:ReleaseReader,{tzdata.ReleaseReader,:current\u release\u from\u table,0,[文件:'lib/tzdata/release\u reader.ex',行:74]},{tzdata.ReleaseReader,:simple\u lookup,1,[文件:'lib/tzdata/tzdata/ReleaseReader/ReleaseReader.ex',行:17]},{tzdata.ReleaseReader,:区域和链接列表,0,[文件:'lib/tzdata/release_reader.ex',行:9]},{tzdata,:zone_exists?,[1]文件:'lib/tzdata.ex',行:61]},{Timex.Timezone,:resolve,3,[文件:'lib/Timezone/Timezone/Timezone.ex',行:358]},{LoggerLogstashBackend,:log_事件,5,[文件:'lib/logger_logstash_后端,行:73]},{loggerstashbackend,:handle事件,2,],[文件:'lib/logger_logstash_backend.ex',行:40]},{:gen_event,:server_update,4,[文件:'gen_event.erl',行:577]},{:gen_event,:server_event.erl',4,{:gen gen u event,:561]},{:gen gen gen event.erl',handle msg,6,[文件:'gen u event.erl',300]},{:proc_lib,:init_p_do_apply,3,[文件:'proc_lib.erl',行:249]}
(stdlib)gen_server.erl:751::gen_server.handle_common_reply/8
(stdlib)proc_lib.erl:249::proc_lib.init_p_do_apply/3
初始调用:Logger.Watcher.init/1
祖先:[Logger.BackendSupervisor,Logger.Supervisor,#PID]
消息队列长度:0
信息:[]
链接:[PID,#PID]
字典:[]
陷阱出口:对
状态::正在运行
堆大小:4185
堆栈大小:27
减少:5 716
       # Start `logger_logstash_backend` after `timex` (and `tzdata`) have been started:
       start_phases: [{:logger_logstash_backend, []}]
  def start_phase(:logger_logstash_backend, _start_type, _phase_args) do
    IO.puts "Starting application start phase `:logger_logstash_backend`"

    case Application.fetch_env(:my_app, :logger_logstash_backend) do
      :error ->
        IO.puts "No configuration value was found for the Logger Logstash backend."

      {:ok, options} ->
        backend = {LoggerLogstashBackend, :logstash_log}

        # From the docs for `Logger.add_backend`:
        #
        # > Backends added by this function are not persisted. Therefore
        # > if the Logger application or supervision tree is restarted,
        # > the backend won't be available. If you need this guarantee,
        # > then configure the backend via the application environment.
        #
        # This shouldn't be an issue for us as the `Logger` application and supervision tree don't seem
        # to have ever needed to be restarted; just started normally when the app is started, i.e. when
        # running the app locally in a `:dev` environment or when starting a new instance in production.

        Logger.add_backend(backend)
        Logger.configure_backend(backend, options)
    end

    :ok
  end