View Source File.Only.Logger.Proxy (File-Only Logger v0.2.28)
Implements logging messages to files only (not to the console).
Summary
Functions
Returns the application for the current process or module.
Returns a formatted heredoc to trace a message from the given env
(Macro.Env
) and module
.
Returns string "<module>.<function>/<arity>" e.g. "My.Math.sqrt/1" from the
given env
(Macro.Env
).
Returns true
if value
is a positive integer, otherwise false
.
Returns the current library name.
Writes message
to the configured log file of logging level level
.
Will prefix string
with "\n<padding>" if string
is longer than
<line_length>
- offset
where <padding>
and <line_length>
are
respectively the :padding
and :line_length
options.
Returns the given module
as a string.
Types
Message to be logged
Functions
@spec app() :: atom()
Returns the application for the current process or module.
Returns :undefined
if the current process does not belong to any
application or the current module is not listed in any application spec.
Examples
iex> alias File.Only.Logger.Proxy
iex> Proxy.app
:file_only_logger
@spec from(Macro.Env.t()) :: String.t()
Returns a formatted heredoc to trace a message from the given env
(Macro.Env
).
Examples
iex> alias File.Only.Logger.Proxy
iex> heredoc = """
...> • App: file_only_logger
...> • Library: file_only_logger
...> • Function:\s
...> File.Only.Logger.ProxyTest.'doctest\
...> """
iex> Proxy.from(__ENV__) =~ heredoc
true
@spec from(Macro.Env.t(), module()) :: String.t()
Returns a formatted heredoc to trace a message from the given env
(Macro.Env
) and module
.
Examples
iex> alias File.Only.Logger.Proxy
iex> heredoc = """
...> • App: file_only_logger
...> • Library: file_only_logger
...> • Module: File.Only.Logger.ProxyTest
...> • Function:\s
...> File.Only.Logger.ProxyTest.'doctest\
...> """
iex> Proxy.from(__ENV__, __MODULE__) =~ heredoc
true
@spec fun(Macro.Env.t()) :: String.t()
Returns string "<module>.<function>/<arity>" e.g. "My.Math.sqrt/1" from the
given env
(Macro.Env
).
Examples
iex> defmodule My.Math do
iex> alias File.Only.Logger.Proxy
iex> def sqrt(_number) do
iex> Proxy.fun(__ENV__)
iex> end
iex> end
iex> My.Math.sqrt(9)
"File.Only.Logger.ProxyTest.My.Math.sqrt/1"
Returns true
if value
is a positive integer, otherwise false
.
@spec lib() :: atom()
Returns the current library name.
Examples
iex> alias File.Only.Logger.Proxy
iex> Proxy.lib
:file_only_logger
@spec log(Logger.level(), message()) :: :ok
Writes message
to the configured log file of logging level level
.
Examples
iex> alias File.Only.Logger.Proxy
iex> Proxy.log(:debug, "*** String message ***")
:ok
iex> alias File.Only.Logger.Proxy
iex> Proxy.log(:debug, ~c"*** charlist message ***")
:ok
iex> alias File.Only.Logger.Proxy
iex> Proxy.log(:debug, [~c"*** Improper ", ~c"List " | "Message ***"])
:ok
iex> alias File.Only.Logger.Proxy
iex> Proxy.log(:debug, fn -> "*** Function message ***" end)
:ok
iex> alias File.Only.Logger.Proxy
iex> Proxy.log(:debug, %{"first" => {1, 2, 3}, "last" => [1, 2, 3]})
:ok
iex> alias File.Only.Logger.Proxy
iex> Proxy.log(:debug, first: {?a, ?b, ?c}, last: [0, 1, 2])
:ok
@spec maybe_break(String.t(), pos_integer(), keyword()) :: String.t()
Will prefix string
with "\n<padding>" if string
is longer than
<line_length>
- offset
where <padding>
and <line_length>
are
respectively the :padding
and :line_length
options.
Options
:line_length
(positive integer) - the preferred line length of messages sent to the log files. Defaults to 80.:padding
(string) - Filler inserted after the line break. Defaults to "\s\s".
Examples
iex> alias File.Only.Logger.Proxy
iex> supercal = "supercalifragilisticexpialidocious"
iex> """
...> • Feeling: #{inspect(supercal) |> Proxy.maybe_break(11)}
...> """
"""
• Feeling: "supercalifragilisticexpialidocious"
"""
iex> alias File.Only.Logger.Proxy
iex> supercal = "supercalifragilisticexpialidocious"
iex> supercal! = "#{supercal}ly #{supercal}!"
iex> """
...> • Feeling: #{String.capitalize(supercal!) |> Proxy.maybe_break(11)}
...> """
"""
• Feeling:\s
Supercalifragilisticexpialidociously supercalifragilisticexpialidocious!
"""
iex> import File.Only.Logger.Proxy, only: [maybe_break: 3]
iex> supercal = :supercalifragilisticexpialidocious
iex> msg = "Today I'm feeling astonishingly #{supercal}..."
iex> """
...> -- Message: #{inspect(msg) |> maybe_break(12, padding: "\s\s\s")}
...> """
"""
-- Message:\s
"Today I'm feeling astonishingly supercalifragilisticexpialidocious..."
"""
Returns the given module
as a string.
Examples
iex> alias File.Only.Logger.Proxy
iex> Proxy.mod(__MODULE__)
"File.Only.Logger.ProxyTest"
iex> alias File.Only.Logger.Proxy
iex> Proxy.mod(Elixir.Date.Range)
"Date.Range"