Elixir 1.15부터 soft-deprecate된 logger backends 대처 방법
elixir에서 로그를 콘솔로 출력하려고 console logger backend를 정의해서 사용했었다.
config :logger, :console,
level: :error,
format: "$time $message $metadata"
elixir 1.15부터 logger backend는 사용 중단 예정(soft-deprecate)이라 default_handler
와 default_formatter
로 설정하는 걸 권장한다.
This release also soft-deprecates Elixir’s Logger Backends in favor of Erlang’s Logger handlers. Elixir will automatically convert your :console backend configuration into the new configuration.
Elixir v1.15 released - The Elixir programming language - elixir-lang.org
왜? erlang logger handler를 사용하기 위해서다. elixir 1.11부터 시작한 erlang logger 통합이 마무리되는 느낌이다.
logger backend에 했던 설정을 default_formatter
, default_handler
에 나눠서 하면 된다.
config :logger, :default_handler,
level: :error
config :logger, :default_formatter,
format: "$time $message $metadata"
포맷은 default_formatter
옵션에 하고 포맷 외 설정은 default_handler
옵션에 한다. erlang의 logger_std_h를 default handler로 사용한다. standard io 출력이 디폴트라서 다른 설정을 안 하는 한 기존의 console backend라고 생각해도 된다.
If you want to use the previous :console implementation based on Logger Backends, you can still set backends: [Logger.Backends.Console] and place the configuration under config :logger, Logger.Backends.Console. Although consider using the :logger_backends project in such cases, as Logger.Backends.Console itself will be deprecated in future releases
Elixir v1.15 released - The Elixir programming language - elixir-lang.org
logger backends를 써야만 하는 상황이라면 elixir-lang/logger_backends - github.com 라이브러리를 사용하면 된다. 퇴로도 열어준다. 친절하다.