Packages
timber
3.1.0
3.1.2
3.1.1
3.1.0
3.0.0
3.0.0-alpha.3
3.0.0-alpha.2
3.0.0-alpha.1
2.8.4
2.8.3
2.8.2
2.8.1
2.8.0
2.7.0
2.6.1
2.6.0
2.5.6
2.5.5
2.5.4
2.5.3
2.5.2
2.5.1
2.5.0
2.4.5
2.4.4
2.4.3
2.4.2
2.4.1
2.4.0
2.3.4
2.3.3
2.3.1
2.3.0
2.2.1
2.2.0
2.1.8
2.1.7
2.1.6
2.1.5
2.1.4
2.1.3
2.1.2
2.1.1
2.1.0
2.0.2
2.0.1
2.0.0
2.0.0-rc7
2.0.0-rc6
2.0.0-rc5
2.0.0-rc4
2.0.0-rc3
2.0.0-rc2
2.0.0-rc1
1.1.18
1.1.17
1.1.16
1.1.15
1.1.14
1.1.13
1.1.12
1.1.11
1.1.10
1.1.9
1.1.8
1.1.7
1.1.6
1.1.5
1.1.4
1.1.3
1.1.2
1.1.1
1.1.0
1.0.16
1.0.15
1.0.14
1.0.13
1.0.12
1.0.11
1.0.10
1.0.9
1.0.8
1.0.7
1.0.6
1.0.5
1.0.4
1.0.3
1.0.2
1.0.1
1.0.0
0.4.7
0.4.6
0.4.5
0.4.4
0.4.3
0.4.2
0.4.1
0.4.0
0.3.2
0.3.1
0.3.0
0.2.3
0.2.2
0.2.1
0.2.0
0.1.5
0.1.4
0.1.3
0.1.2
0.1.1
0.1.0
🌲 Great Elixir Logging Made Easy. Official Timber.io Integration.
Current section
Files
Jump to
Current section
Files
lib/timber/global_context.ex
defmodule Timber.GlobalContext do
@moduledoc false
# Manages a globally available Timber Context
# This module stores context in Timber's OTP application configuration
# in order to support global writing and reading with high-throughput.
# The global context is set and maintained in the OTP application configuration
# under the :global_context key for ease-of-use. The API in this module does
# not assume that it will always be stored there, so if we find that storing
# global context here is detrimental, we can easily move it to another methodology.
alias Timber.Context
@doc """
Merges the provided context into the existing context
"""
@spec add(map()) :: :ok
def add(context) do
load()
|> Context.merge(context)
|> save()
end
@doc """
Deletes the key from the existing context.
"""
@spec delete(atom) :: :ok
def delete(key) do
load()
|> Context.delete(key)
|> save()
end
@doc """
Dumps the context to a `Context.t`
This function is provided as a convenience to see the current global
context.
"""
@spec get() :: Context.t()
def get() do
load()
end
@doc """
Sets the global context, overriding any existing context
"""
@spec put(Context.t()) :: :ok
def put(context) do
save(context)
end
@doc false
@spec load() :: Context.t()
def load() do
Application.get_env(:timber, :global_context, Context.new())
end
@doc false
@deprecated "Please use delete/1"
@spec remove_key(atom) :: :ok
def remove_key(key) do
delete(key)
end
@doc false
@spec save(Context.t()) :: :ok
def save(context) do
Application.put_env(:timber, :global_context, context)
end
end