Current section
Files
Jump to
Current section
Files
lib/arkecosystem/client/logger.ex
defmodule ArkEcosystem.Client.Logger do
@moduledoc """
This is a wrapper for the standard Logger module. It contains convenience
methods for logging exceptions and objects in addition to strings.
"""
require Logger
# Contextual
@doc """
Converts a rescued error and stacktrace into a pretty error output.
Returns the error object passed.
"""
@spec rescued_error(Exception.t(), List.t()) :: Exception.t()
def rescued_error(err, stacktrace) do
:error |> Exception.format(err, stacktrace) |> error
err
end
# Generic
@doc """
Outputs the object or string in debug mode.
Returns the object passed.
"""
@spec debug(any()) :: any()
def debug(value) when is_bitstring(value) do
Logger.debug(value)
value
end
def debug(value) do
value |> pp |> debug
value
end
@doc """
Outputs the object or string in error mode.
Returns the object passed.
"""
@spec error(any()) :: any()
def error(value) when is_bitstring(value) do
Logger.error(value)
value
end
def error(value) do
value |> pp |> error
value
end
@doc """
Outputs the object or string in info mode.
Returns the object passed.
"""
@spec info(any()) :: any()
def info(value) when is_bitstring(value) do
Logger.info(value)
value
end
def info(value) do
value |> pp |> info
value
end
@doc """
Outputs the object or string in the mode passed mode.
Returns the object passed.
"""
@spec log(Atom.t(), any()) :: any()
def log(:debug, value) do
debug(value)
end
def log(:default, value) do
info(value)
end
def log(:error, value) do
error(value)
end
def log(:info, value) do
info(value)
end
def log(:warn, value) do
warn(value)
end
@doc """
Outputs the object or string in warn mode.
Returns the object passed.
"""
def warn(value) when is_bitstring(value) do
Logger.warn(value)
value
end
def warn(value) do
value |> pp |> warn
value
end
# private
defp pp(value) do
inspect(value, pretty: true, width: 100)
end
end