【问题标题】:Elixir OTP 24 doesn’t apply custom Logger backendElixir OTP 24 不应用自定义 Logger 后端
【发布时间】:2022-01-24 10:30:25
【问题描述】:

我有一个伞形应用程序,它在根 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 没有启动,所有日志都将使用默认的:console 后端转到 STDOUT。但是配置还是一样的:

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)

但我认为应用程序配置更合适。

我应该如何解决这个问题?

【问题讨论】:

    标签: erlang elixir phoenix-framework erlang-otp


    【解决方案1】:

    您的配置对我有用。我的配置是:Ubuntu2004,Elixir 1.12.2,Erlang 24.1(ESL Erlang)。我试图重现你的问题。看看它,它可能会有所帮助。 https://github.com/z5ottu/elixir_12_logger_test

    【讨论】:

      猜你喜欢
      • 2021-12-18
      • 1970-01-01
      • 2020-06-13
      • 2021-10-05
      • 1970-01-01
      • 2020-06-20
      • 1970-01-01
      • 1970-01-01
      • 2018-10-20
      相关资源
      最近更新 更多