Packages

Logging utilities for Elixir.

Current section

2 Versions

Jump to

Compare versions

13 files changed
+133 additions
-40 deletions
  @@ -10,7 +10,7 @@ by adding `loggex` to your list of dependencies in `mix.exs`:
10 10 ```elixir
11 11 def deps do
12 12 [
13 - {:loggex, "~> 0.0.1"}
13 + {:loggex, "~> 0.1"}
14 14 ]
15 15 end
16 16 ```
  @@ -1,29 +1,32 @@
1 1 {<<"app">>,<<"loggex">>}.
2 2 {<<"build_tools">>,[<<"mix">>]}.
3 3 {<<"description">>,<<"Logging utilities for Elixir.">>}.
4 - {<<"elixir">>,<<"~> 1.6">>}.
4 + {<<"elixir">>,<<"~> 1.9">>}.
5 5 {<<"files">>,
6 - [<<".formatter.exs">>,<<"mix.exs">>,<<"README.md">>,<<"LICENSE">>,
7 - <<"lib/loggex.ex">>,<<"lib/loggex/adapter.ex">>,
8 - <<"lib/loggex/adapters/console.ex">>,<<"lib/loggex/adapters/fluentd.ex">>,
6 + [<<".formatter.exs">>,<<"mix.exs">>,<<"README.md">>,<<"LICENSE">>,<<"lib">>,
7 + <<"lib/loggex">>,<<"lib/loggex/logger.ex">>,<<"lib/loggex/adapter.ex">>,
8 + <<"lib/loggex/logger_backend.ex">>,<<"lib/loggex/adapters">>,
9 9 <<"lib/loggex/adapters/kafka.ex">>,<<"lib/loggex/adapters/logstash.ex">>,
10 - <<"lib/loggex/adapters/test.ex">>,<<"lib/loggex/adapters/webhook.ex">>,
11 - <<"lib/loggex/logger.ex">>,<<"lib/loggex/logger_backend.ex">>]}.
10 + <<"lib/loggex/adapters/webhook.ex">>,<<"lib/loggex/adapters/console.ex">>,
11 + <<"lib/loggex/adapters/fluentd.ex">>,<<"lib/loggex/adapters/test.ex">>,
12 + <<"lib/loggex.ex">>]}.
12 13 {<<"licenses">>,[<<"MIT">>]}.
13 14 {<<"links">>,[]}.
14 - {<<"maintainers">>,[<<"Ian Luites">>]}.
15 15 {<<"name">>,<<"loggex">>}.
16 16 {<<"requirements">>,
17 17 [[{<<"app">>,<<"jason">>},
18 18 {<<"name">>,<<"jason">>},
19 19 {<<"optional">>,false},
20 - {<<"requirement">>,<<"~> 1.0">>}],
21 - [{<<"app">>,<<"msgpack">>},
22 - {<<"name">>,<<"msgpack">>},
23 - {<<"optional">>,false},
24 - {<<"requirement">>,<<"~> 0.7.0">>}],
20 + {<<"repository">>,<<"hexpm">>},
21 + {<<"requirement">>,<<">= 1.2.0">>}],
25 22 [{<<"app">>,<<"httpx">>},
26 23 {<<"name">>,<<"httpx">>},
27 24 {<<"optional">>,false},
28 - {<<"requirement">>,<<"~> 0.0.10">>}]]}.
29 - {<<"version">>,<<"0.0.1">>}.
25 + {<<"repository">>,<<"hexpm">>},
26 + {<<"requirement">>,<<">= 0.0.16">>}],
27 + [{<<"app">>,<<"msgpack">>},
28 + {<<"name">>,<<"msgpack">>},
29 + {<<"optional">>,false},
30 + {<<"repository">>,<<"hexpm">>},
31 + {<<"requirement">>,<<">= 0.7.0">>}]]}.
32 + {<<"version">>,<<"0.1.1">>}.
  @@ -3,10 +3,29 @@ defmodule Loggex do
3 3 Documentation for Loggex.
4 4 """
5 5
6 + @typedoc ~S"A log tag."
6 7 @type tag :: String.t() | atom
8 +
9 + @typedoc ~S"""
10 + The event to log.
11 +
12 + The event can be a function to be lazily resolved.
13 + """
7 14 @type event :: map | (() -> map)
15 +
16 + @typedoc ~S"Adapter yto user for logging."
8 17 @type adapter :: atom | {atom, Keyword.t()}
9 18
19 + @doc ~S"""
20 + Log event under tag.
21 +
22 + ## Example
23 +
24 + ```elixir
25 + iex> log!(:logins, %{ip: "83.12.209.46"}
26 + ```
27 + """
28 + @spec log!(tag, event, Keyword.t()) :: :ok
10 29 def log!(tag, event, opts \\ []) do
11 30 event_function = fn -> Map.merge(base_data(), resolve(event)) end
12 31
  @@ -35,16 +54,18 @@ defmodule Loggex do
35 54
36 55 ### Adapters ###
37 56
57 + @spec adapters(Keyword.t()) :: [adapter]
38 58 defp adapters(opts) do
39 59 opts
40 - |> Keyword.get(:adapters)
41 - |> Kernel.||(configured_adapters())
60 + |> Keyword.get_lazy(:adapters, &configured_adapters/0)
42 61 |> prepare_adapters
43 62 end
44 63
64 + @spec configured_adapters :: [adapter]
45 65 defp configured_adapters, do: Application.get_env(:loggex, :adapters, [])
46 66
47 67 @doc false
68 + @spec prepare_adapters(adapter | [adapter] | nil) :: [adapter]
48 69 def prepare_adapters(nil), do: nil
49 70
50 71 def prepare_adapters(adapters) do
  @@ -1,4 +1,9 @@
1 1 defmodule Loggex.Adapter do
2 + @moduledoc ~S"""
3 + Adapter to implement for logging.
4 + """
5 +
6 + @doc ~S"Log an event under a given tag"
2 7 @callback log(tag :: Loggex.tag(), event :: (() -> map), opts :: Keyword.t()) ::
3 8 :ok | {:error, atom}
4 9 end
  @@ -1,4 +1,7 @@
1 1 defmodule Loggex.Adapters.Console do
2 + @moduledoc ~S"""
3 + Log events to console. (TTY)
4 + """
2 5 @behaviour Loggex.Adapter
3 6
4 7 @color IO.ANSI.yellow()
Loading more files…