diff --git a/CHANGELOG.md b/CHANGELOG.md index 2165976..223cea4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,11 @@ +## [Unreleased] + +### Fixed +- Resolve Elixir 1.19 / Logger deprecation warnings: + - Normalize the legacy `:warn` level to `:warning` before it reaches `Logger.compare_levels/2`, which was emitting a deprecation warning on every warning-level log. + - Remove the deprecated `$levelpad` token from the default format pattern, docs, and example configs. + - Replace the single-quoted `'#Ref'` charlist with the `~c"#Ref"` sigil in the JSON formatter. + ## [2.1.0] - 2024-07-24 ### Fixed diff --git a/README.md b/README.md index 345d84b..dee9823 100644 --- a/README.md +++ b/README.md @@ -77,7 +77,7 @@ You might notice that instead of just passing the Module name, we're passing a t ``` config :logger, :ex_syslogger_error, level: :error, - format: "$date $time [$level] $levelpad$node $metadata $message", + format: "$date $time [$level] $node $metadata $message", metadata: [:module, :line, :function], ident: "MyApplication", facility: :local0, @@ -104,7 +104,7 @@ config :logger, :ex_syslogger_json, ### Backend configuration properties * __level__ (optional): the logging level. It defaults to `:info` -* __format__ (optional): Same as `:console` backend ([Logger.Formatter](http://elixir-lang.org/docs/stable/logger/)). It defaults to `"\n$date $time [$level] $levelpad$node $metadata $message\n"` +* __format__ (optional): Same as `:console` backend ([Logger.Formatter](http://elixir-lang.org/docs/stable/logger/)). It defaults to `"\n$date $time [$level] $node $metadata $message\n"` * __formatter__ (optional): Formatter that will be used to format the log. It default to Logger.Formatter * __metadata__ (optional): Same as `:console` backend [Logger.Formatter](http://elixir-lang.org/docs/stable/logger/). It defaults to `[]` * __ident__ (optional): A string that's prepended to every message, and is typically set to the app name. It defaults to `"Elixir"` diff --git a/config/dev.exs b/config/dev.exs index b1e332a..5d0b117 100644 --- a/config/dev.exs +++ b/config/dev.exs @@ -14,12 +14,12 @@ config :logger, config :logger, :console, level: :error, - format: "$date $time [$level] $levelpad$node $metadata $message\n", + format: "$date $time [$level] $node $metadata $message\n", metadata: [:module, :line, :function] config :logger, :ex_syslogger_error, level: :error, - format: "$date $time [$level] $levelpad$node $metadata $message", + format: "$date $time [$level] $node $metadata $message", metadata: [:module, :line, :function], ident: "MyApplication", facility: :local0, diff --git a/examples/example1/config/config.exs b/examples/example1/config/config.exs index 4a39a52..d9277c3 100644 --- a/examples/example1/config/config.exs +++ b/examples/example1/config/config.exs @@ -38,12 +38,12 @@ config :logger, config :logger, :console, level: :error, - format: "$date $time [$level] $levelpad$node $metadata $message\n", + format: "$date $time [$level] $node $metadata $message\n", metadata: [:module, :line, :function] config :logger, :ex_syslogger_error, level: :error, - format: "$date $time [$level] $levelpad$node $metadata $message", + format: "$date $time [$level] $node $metadata $message", metadata: [:module, :line, :function], ident: "MyApplication", facility: :local0, diff --git a/lib/ex_syslogger.ex b/lib/ex_syslogger.ex index e1b237e..fe04544 100644 --- a/lib/ex_syslogger.ex +++ b/lib/ex_syslogger.ex @@ -61,7 +61,7 @@ defmodule ExSyslogger do ``` config :logger, :ex_syslogger_error, level: :error, - format: "$date $time [$level] $levelpad$node $metadata $message", + format: "$date $time [$level] $node $metadata $message", metadata: [:module, :line, :function], ident: "MyApplication", facility: :local0, @@ -88,7 +88,7 @@ defmodule ExSyslogger do ### Backend configuration properties * __level__ (optional): the logging level. It defaults to `:info` - * __format__ (optional): Same as `:console` backend ([Logger.Formatter](http://elixir-lang.org/docs/stable/logger/)). It defaults to `"\n$date $time [$level] $levelpad$node $metadata $message\n"` + * __format__ (optional): Same as `:console` backend ([Logger.Formatter](http://elixir-lang.org/docs/stable/logger/)). It defaults to `"\n$date $time [$level] $node $metadata $message\n"` * __formatter__ (optional): Formatter that will be used to format the log. It default to Logger.Formatter * __metadata__ (optional): Same as `:console` backend [Logger.Formatter](http://elixir-lang.org/docs/stable/logger/). It defaults to `[]` * __ident__ (optional): A string that's prepended to every message, and is typically set to the app name. It defaults to `"Elixir"` @@ -161,7 +161,7 @@ defmodule ExSyslogger do @behaviour :gen_event - @default_pattern "$date $time [$level] $levelpad$node $metadata $message\n" + @default_pattern "$date $time [$level] $node $metadata $message\n" @doc false def init({__MODULE__, name}) do @@ -201,6 +201,7 @@ defmodule ExSyslogger do {level, _gl, {Logger, msg, timestamp, metadata}}, %{log: log, config: config} = state ) do + level = normalize_level(level) min_level = config.level if is_nil(min_level) or Logger.compare_levels(level, min_level) != :lt do @@ -218,9 +219,12 @@ defmodule ExSyslogger do # # Internal functions + defp normalize_level(:warn), do: :warning + defp normalize_level(level), do: level + defp level_to_priority(:debug), do: :debug defp level_to_priority(:info), do: :info - defp level_to_priority(:warn), do: :warning + defp level_to_priority(:warning), do: :warning defp level_to_priority(:error), do: :err defp get_config(name, options) do @@ -228,7 +232,7 @@ defmodule ExSyslogger do configs = Keyword.merge(env, options) Application.put_env(:logger, :ex_syslogger, configs) - level = Keyword.get(configs, :level, :info) + level = Keyword.get(configs, :level, :info) |> normalize_level() metadata = Keyword.get(configs, :metadata, []) facility = Keyword.get(configs, :facility, :local0) option = Keyword.get(configs, :option, :ndelay) diff --git a/lib/ex_syslogger/json_formatter.ex b/lib/ex_syslogger/json_formatter.ex index 22880a8..9faedec 100644 --- a/lib/ex_syslogger/json_formatter.ex +++ b/lib/ex_syslogger/json_formatter.ex @@ -93,7 +93,7 @@ defmodule ExSyslogger.JsonFormatter do end defp add_to_log({key, ref}, log) when is_reference(ref) do - '#Ref' ++ rest = :erlang.ref_to_list(ref) + ~c"#Ref" ++ rest = :erlang.ref_to_list(ref) Map.put(log, key, List.to_string(rest)) end diff --git a/test/exsyslog_test.exs b/test/exsyslog_test.exs index 980f5fc..e41b5e5 100644 --- a/test/exsyslog_test.exs +++ b/test/exsyslog_test.exs @@ -10,6 +10,9 @@ defmodule ExsyslogTest do info_log = "info log #{random_str()}" Logger.info(info_log) + warning_log = "warning log #{random_str()}" + Logger.warning(warning_log) + error_log = "error log #{random_str()}" Logger.error(error_log) end