Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -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
Expand Down
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand All @@ -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"`
Expand Down
4 changes: 2 additions & 2 deletions config/dev.exs
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down
4 changes: 2 additions & 2 deletions examples/example1/config/config.exs
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down
14 changes: 9 additions & 5 deletions lib/ex_syslogger.ex
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand All @@ -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"`
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand All @@ -218,17 +219,20 @@ 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
env = Application.get_env(:logger, name, [])
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)
Expand Down
2 changes: 1 addition & 1 deletion lib/ex_syslogger/json_formatter.ex
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down
3 changes: 3 additions & 0 deletions test/exsyslog_test.exs
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
Loading