Elixir 1.15 deprecated the Logger.warn/1
function:
require Logger Logger.warn("A warn!")
warning: Logger.warn/1 is deprecated. Use Logger.warning/2 instead
The Logger.warning/2
function was added to Elixir in 1.11.0.
So if, for SemVer-related reasons, your library still supports 1.10, you’ll get an UndefinedFunctionError
when calling Logger.warning/2
on any version before 1.11.0:
require Logger Logger.warning("A warning!")
w** (UndefinedFunctionError) function Logger.warning/1 is undefined or private. Did you mean one of: * warn/1 * warn/2
A workaround, at least until you finally drop 1.9, is to add a backwards compatibility helper that delegates to the appropriate function based on System.version/0
:
defmodule BackwardsCompatibleLogger do require Logger case Version.compare(System.version(), "1.11.0") do :lt -> defdelegate warning(message), to: Logger, as: :warn _ -> defdelegate warning(message), to: Logger end end BackwardsCompatibleLogger.warning("A warn(ing)!")
[warning] A warn(ing)!