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

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\s\s" if longer than line_length - offset.

Returns the given module as a string.

Link to this section Types

Specs

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

Message to be logged

Link to this section Functions

Specs

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

Specs

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.
...> """
...> |> String.trim_trailing()
iex> Proxy.from(__ENV__) =~ heredoc
true

Specs

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.
...> """
...> |> String.trim_trailing()
iex> Proxy.from(__ENV__, __MODULE__) =~ heredoc
true

Specs

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

is_pos_integer(value)

View Source (macro)

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

Specs

lib() :: atom()

Returns the current library name.

Examples

iex> alias File.Only.Logger.Proxy
iex> Proxy.lib
:file_only_logger

Specs

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, ['*** 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, line_length \\ 80)

View Source

Specs

maybe_break(String.t(), pos_integer(), pos_integer()) :: String.t()

Will prefix string with "\n\s\s" if longer than line_length - offset.

You may use file config/config.exs or friends to configure line_length:

import Config

config :file_only_logger, line_length: 80
import Config

line_length =
  try do
    {keyword, _binding} = Code.eval_file(".formatter.exs")
    keyword[:line_length] || 98
  rescue
    _error -> 80
  end

config :file_only_logger, line_length: line_length

Examples

iex> alias File.Only.Logger.Proxy
iex> supercal = "supercalifragilisticexpialidocious"
iex> heredoc = """
...> Feeling: #{supercal}
...> """
iex> Proxy.maybe_break(heredoc, 9)
"Feeling: supercalifragilisticexpialidocious\n"

iex> alias File.Only.Logger.Proxy
iex> supercal = "supercalifragilisticexpialidocious"
iex> heredoc = """
...> Feeling: #{supercal}ly #{supercal}
...> """
iex> Proxy.maybe_break(heredoc, 9) |> String.slice(0..57)
"\n\s\sFeeling: supercalifragilisticexpialidociously supercali"

Specs

mod(module()) :: String.t()

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"