Packages
ConfigCat SDK for Elixir. Feature Flags created by developers for developers with ❤️. ConfigCat lets you manage feature flags across frontend, backend, mobile, and desktop apps without (re)deploying code. % rollouts, user targeting, segmentation. Feature toggle SDKs for all main languages.
Current section
Files
Jump to
Current section
Files
lib/config_cat/config_cat_logger.ex
defmodule ConfigCat.ConfigCatLogger do
@moduledoc false
@spec debug(String.t()) :: Macro.t()
@spec debug(String.t(), keyword()) :: Macro.t()
defmacro debug(message, metadata \\ []) do
quote bind_quoted: [message: message, metadata: metadata, module: __MODULE__] do
require Logger
Logger.debug(fn -> module.formatted_message(message, metadata) end)
end
end
@spec error(String.t()) :: Macro.t()
@spec error(String.t(), keyword()) :: Macro.t()
defmacro error(message, metadata \\ []) do
quote bind_quoted: [message: message, metadata: metadata, module: __MODULE__] do
require Logger
Logger.error(fn -> module.formatted_message(message, metadata) end)
instance_id = Keyword.get(Logger.metadata(), :instance_id)
if instance_id do
ConfigCat.Hooks.invoke_on_error(instance_id, message)
end
end
end
@spec info(String.t()) :: Macro.t()
@spec info(String.t(), keyword()) :: Macro.t()
defmacro info(message, metadata \\ []) do
quote bind_quoted: [message: message, metadata: metadata, module: __MODULE__] do
require Logger
Logger.info(fn -> module.formatted_message(message, metadata) end)
end
end
@spec warning(String.t()) :: Macro.t()
@spec warning(String.t(), keyword()) :: Macro.t()
defmacro warning(message, metadata \\ []) do
quote bind_quoted: [message: message, metadata: metadata, module: __MODULE__] do
require Logger
Logger.warning(fn -> module.formatted_message(message, metadata) end)
end
end
@spec warn_offline :: String.t()
def warn_offline do
message = "Client is in offline mode; it cannot initiate HTTP calls."
warning(message, event_id: 3200)
message
end
@doc false
@spec formatted_message(String.t(), keyword()) :: {String.t(), keyword()}
def formatted_message(message, metadata) do
logger_metadata = Logger.metadata()
event_id = metadata[:event_id] || logger_metadata[:event_id] || 0
{"[#{event_id}] " <> message, metadata}
end
end