Current section
2 Versions
Jump to
Current section
2 Versions
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…