Skip to content

Instantly share code, notes, and snippets.

@cjbottaro
Created May 4, 2017 19:50
Show Gist options
  • Select an option

  • Save cjbottaro/3d9c98d3f1192f00e86d293c20ceb21f to your computer and use it in GitHub Desktop.

Select an option

Save cjbottaro/3d9c98d3f1192f00e86d293c20ceb21f to your computer and use it in GitHub Desktop.

Revisions

  1. cjbottaro created this gist May 4, 2017.
    3 changes: 3 additions & 0 deletions config.exs
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,3 @@
    config :gnat, logger: [
    level: :info
    ]
    3 changes: 3 additions & 0 deletions logger.ex
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,3 @@
    defmodule Gnat.Stream.Logger do
    use Gnat.Logging, otp_app: :gnat
    end
    29 changes: 29 additions & 0 deletions logging.ex
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,29 @@
    defmodule Gnat.Logging do

    defmacro __using__(options) do
    quote bind_quoted: [otp_app: options[:otp_app]] do
    require Logger

    def debug(message, metadata \\ []), do: log(:debug, message, metadata)
    def info(message, metadata \\ []), do: log(:info, message, metadata)
    def warn(message, metadata \\ []), do: log(:warn, message, metadata)
    def error(message, metadata \\ []), do: log(:error, message, metadata)

    @otp_app otp_app

    def log(level, message, metadata \\ []) do
    config = Application.get_env(@otp_app, :logger, [])
    config_level = Keyword.get(config, :level, :debug)
    if level_to_int(config_level) <= level_to_int(level) do
    Logger.log(level, message, metadata)
    end
    end

    defp level_to_int(:debug), do: 0
    defp level_to_int(:info), do: 1
    defp level_to_int(:warn), do: 2
    defp level_to_int(:error), do: 3
    end
    end

    end