Packages

Shared functionality of the Bunyan distributed and pluggable logging system

Current section

Files

Jump to
bunyan_shared lib shared level.ex
Raw

lib/shared/level.ex

defmodule Bunyan.Shared.Level do
@type type_as_number :: 0 | 10 | 20 | 30
@type t :: ( :debug | :info | :warn | :error )
@compile { :inline,
debug: 0,
info: 0,
warn: 0,
error: 0,
of: 1,
to_s: 1,
to_atom: 1
}
def debug, do: 00
def info, do: 10
def warn, do: 20
def error, do: 30
def of(:debug), do: debug()
def of(:info), do: info()
def of(:warn), do: warn()
def of(:error), do: error()
def of(other) do
raise """
Invalid log level (#{inspect other}).
Valid levels are: :debug, :info, :warn, and :error
"""
end
def to_s(00), do: "D"
def to_s(10), do: "I"
def to_s(20), do: "W"
def to_s(30), do: "E"
def to_s(_), do: "?"
def to_atom(00), do: :debug
def to_atom(10), do: :info
def to_atom(20), do: :warn
def to_atom(30), do: :error
end