View Source File.Only.Logger.Proxy (File-Only Logger v0.1.53)

Implements logging messages to files only (not to the console).

Link to this section Summary

Types

Message to be logged

Functions

Returns the application for the current process or module.

Returns a formatted heredoc to trace a message from the given env (Macro.Env).

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.

Link to this section Types

@type message() :: String.t() | iodata() | (... -> any()) | keyword() | map()

Message to be logged

Link to this section 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

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

Examples

iex> alias File.Only.Logger.Proxy
iex> heredoc = """
...> • App: file_only_logger
...> • Library: file_only_logger
...> • Function:\s
...>   File.Only.Logger.ProxyTest.
...> """
...> |> String.trim_trailing()
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

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.
...> """
...> |> String.trim_trailing()
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

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"
Link to this macro

is_pos_integer(value)

View Source (macro)

Returns true if value is a positive integer, otherwise false.

@spec lib() :: atom()

Returns the current library name.

examples

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

Examples

iex> alias File.Only.Logger.Proxy
iex> Proxy.log(:debug, "*** String message ***")
:ok

iex> alias File.Only.Logger.Proxy
iex> Proxy.log(:debug, ['*** Improper ', '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' => 'Map', 'last' => 'Message'})
:ok

iex> alias File.Only.Logger.Proxy
iex> Proxy.log(:debug, first: 'Keyword', last: 'Message')
:ok
Link to this function

maybe_break(string, offset, options \\ [])

View Source
@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

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

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..."
"""
@spec mod(module()) :: String.t()

Returns the given module as a string.

examples

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"