Packages
timber
3.0.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/config.ex
defmodule Timber.Config do
@moduledoc """
Configuration helpers for Timber
"""
@application :timber
@default_http_body_max_bytes 2048
@doc """
Your Timber application API key. This can be obtained after you create your
application in https://app.timber.io
# Example
```elixir
config :timber, :api_key, "abcd1234"
```
"""
def api_key do
case Application.get_env(@application, :api_key) do
{:system, env_var_name} -> System.get_env(env_var_name)
api_key when is_binary(api_key) -> api_key
_else -> nil
end
end
@doc """
Helpful to inspect internal Timber activity; a useful debugging utility.
If specified, Timber will write messages to this device. We cannot use the
standard Logger directly because it would create an infinite loop.
"""
def debug_io_device do
Application.get_env(@application, :debug_io_device)
end
@doc """
Change the name of the `Logger` metadata key that Timber uses for events.
By default, this is `:event`
# Example
```elixir
config :timber, :event_key, :timber_event
Logger.info("test", timber_event: my_event)
```
"""
def event_key, do: Application.get_env(@application, :event_key, :event)
@doc """
Allows for the sanitizations of custom header keys. This should be used to
ensure sensitive data, such as API keys, do not get logged.
**Note, the keys passed must be lowercase!**
Timber normalizes headers to be downcased before comparing them here. For
performance reasons it is advised that you pass lower cased keys.
# Example
```elixir
config :timber, :header_keys_to_sanitize, ["my-sensitive-header-name"]
```
"""
def header_keys_to_sanitize, do: Application.get_env(@application, :header_keys_to_sanitize, [])
@doc """
Configuration for the `:body` byte size limit in the `Timber.Events.HTTP*` events.
Bodies that exceed this limit will be truncated to this byte limit. The default is
`2048` with a maximum allowed value of `8192`.
# Example
```elixir
config :timber, :http_body_size_limit, 2048
```
"""
def http_body_size_limit,
do: Application.get_env(@application, :http_body_size_limit, @default_http_body_max_bytes)
@doc """
Alternate URL for delivering logs. This is helpful if you want to use a proxy,
for example.
# Example
```elixir
config :timber, :http_url, "https://123.123.123.123"
```
"""
def http_url, do: Application.get_env(@application, :http_url)
@doc """
Unfortunately the `Elixir.Logger` produces timestamps with microsecond prevision.
In a high volume system, this can produce logs with matching timestamps, making it
impossible to preseve the order of the logs. By enabling this, Timber will discard
the default `Elixir.Logger` timestamps and use it's own with nanosecond precision.
# Example
```elixir
config :timber, :nanosecond_timestamps, true
```
"""
@spec use_nanosecond_timestamps? :: boolean
def use_nanosecond_timestamps? do
Application.get_env(@application, :nanosecond_timestamps, true)
end
end