Packages
timber
1.1.7
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
alias __MODULE__.MissingAPIKeyError
@env_key :timber
@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(@env_key, :api_key) do
{:system, env_var_name} -> System.get_env(env_var_name)
api_key when is_binary(api_key) -> api_key
_other -> raise(MissingAPIKeyError)
end
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(@env_key, :event_key, :event)
@doc """
Configuration for the `:body` size limit in the `Timber.Events.HTTP*` events.
Bodies that exceed this limit will be truncated to this limit.
Please take care with this value, increasing it too high can mean very large
payloads and very high outgoing network activity.
# Example
```elixir
config :timber, :http_body_size_limit, 5000
```
"""
def http_body_size_limit, do: Application.get_env(@env_key, :http_body_size_limit, 2000)
@doc """
Custom HTTP client to use for transmitting logs over HTTP. Timber comes packaged with a
`:hackney` client. See `Timber.Transports.HTTP.HackneyClient`. If you do not want to use
`:hackney` you can easily write your own client to handle log transport.
# Example
```elixir
config :timber, :http_client, MyCustomHTTPClient
```
"""
def http_client!, do: Application.fetch_env!(@env_key, :http_client)
@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(@env_key, :http_url)
@doc """
Specify a different JSON encoder function. Timber uses `Poison` by default.
# Example
```elixir
config :timber, :json_encoder, fn map -> encode(map) end
```
"""
def json_encoder, do: Application.get_env(@env_key, :json_encoder, &Poison.encode_to_iodata!/1)
@doc """
Specify the log level that phoenix log lines write to. Such as template renders.
# Example
```elixir
config :timber, :instrumentation_level, :info
```
"""
@spec phoenix_instrumentation_level(atom) :: atom
def phoenix_instrumentation_level(default) do
Application.get_env(@env_key, :instrumentation_level, default)
end
@doc """
Gets the transport specificed in the :timber configuration. The default is
`Timber.Transports.IODevice`.
"""
def transport, do: Application.get_env(@env_key, :transport, Timber.Transports.IODevice)
#
# Errors
#
defmodule MissingAPIKeyError do
message =
"""
We couldn't find an API key for Timber. Please ensure that you have configured your
Timber API properly. Ex:
config :timber,
api_key: {:system, "TIMBER_API_KEY"} # or pass the key directly
"""
defexception message: message
end
end