erlang Elixir OTP 24不适用自定义记录器后端

wgeznvg7  于 2022-12-16  发布在  Erlang
关注(0)|答案(1)|浏览(181)

我有一个伞应用程序,它在根config.exs文件中有日志配置:

config :logger,
  compile_time_purge_level: :debug,
  backends: [
    {LoggerFileBackend, :backends_log}
  ]

config :logger, :backends_log,
  path: "path/to/awesome.log",
  level: :debug,
  metadata: :all

将OTP从22版本更新为24版本(elixir 1.12.3erlang 24.1)后,backends_log未启动,所有日志将转到STDOUT(默认为:console后端),但配置仍然相同:

Application.get_all_env(:kernel)
=> [
  logger: [
    {:handler, :default, :logger_std_h,
     %{
       config: %{type: :standard_io},
       formatter: {:logger_formatter,
        %{legacy_header: true, single_line: false}}
     }}
  ],
  logger_sasl_compatible: false,
  logger_level: :notice,
  shell_docs_ansi: :auto
]

Application.get_all_env(:logger)
=> [
  handle_sasl_reports: true,
  discard_threshold: 5000,
  compile_time_purge_matching: [],
  sync_threshold: 10000,
  utc_log: false,
  console: [],
  backends_log: [path: "path/to/awesome.log", level: :debug, metadata: :all],
  start_options: [],
  pdu_format_reviewer_error_count: [level: :error],
  compile_time_application: nil,
  backends: [
    {LoggerFileBackend, :backends_log}
  ],
  discard_threshold_periodic_check: 30000,
  translators: [
    {Plug.Cowboy.Translator, :translate},
    {Logger.Translator, :translate}
  ],
  compile_time_purge_level: :debug,
  truncate: 8096,
  log_counter: [level: :debug],
  handle_otp_reports: true,
  discard_threshold_for_error_logger: 500,
  translator_inspect_opts: []
]

:logger.get_primary_config()
=> %{
  filter_default: :log,
  filters: [process_disabled: {&Logger.Filter.process_disabled/2, []}],
  level: :debug,
  metadata: %{}
}

我可以使用运行时配置修复此问题

Logger.add_backend({LoggerFileBackend, :backends_log})
Logger.configure_backend(
   {LoggerFileBackend, :backends_log},
   path: "path/to/awesome.log",
   level: :debug,
   metadata: :all
)
Logger.remove_backend(Logger.Backends.Console)

但我认为应用程序配置是更合适的方法。
我应该如何解决这个问题?

wxclj1h5

wxclj1h51#

您的配置适合我。我的配置是:tu2004,Elixir 1.12.2,Erlang 24.1(ESL Erlang)。我试图重现您的问题。请查看它,它可能会有帮助。https://github.com/z5ottu/elixir_12_logger_test

相关问题