Packages
timber
1.1.11
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/mix/tasks/timber/install/platform.ex
defmodule Mix.Tasks.Timber.Install.Platform do
alias Mix.Tasks.Timber.Install.{Application, Event, IOHelper, Messages}
alias Mix.Tasks.Timber.TestThePipes
def install!(session_id, %{platform_type: "heroku", heroku_drain_url: heroku_drain_url} = application) do
Messages.heroku_drain_instructions(heroku_drain_url)
|> IOHelper.puts()
Application.wait_for_logs(application, session_id)
end
def install!(session_id, %{api_key: api_key} = application) do
:ok = check_for_http_client(session_id, api_key)
Messages.action_starting("Sending a few test logs...")
|> IOHelper.write()
{:ok, http_client} = Timber.Transports.HTTP.init([api_key: api_key])
log_entries = TestThePipes.log_entries()
http_client =
Enum.reduce(log_entries, http_client, fn log_entry, http_client ->
{:ok, http_client} = Timber.Transports.HTTP.write(log_entry, http_client)
http_client
end)
Timber.Transports.HTTP.flush(http_client)
Messages.success()
|> IOHelper.puts(:green)
Application.wait_for_logs(application, session_id)
end
defp check_for_http_client(session_id, api_key) do
if Code.ensure_loaded?(:hackney) do
case :hackney.start() do
:ok -> :ok
{:error, {:already_started, _name}} -> :ok
other -> other
end
:ok
else
Event.send!(:http_client_not_found, session_id, api_key)
"""
In order to proceed, an HTTP client must be specified:
1. Add :hackney to your dependencies:
def deps do
[{:hackney, "~> 1.6"}]
end
2. Add :hackney to your :applications list:
def application do
[applications: [:hackney]]
end
3. Run mix deps.get
4. Quit and re-run this installer. It is perfectly safe to do so.
This installer is idempotent.
* Note: advanced users can define their own HTTP client if desired.
Please see Timber.Transports.HTTP.Client for more details.
"""
|> IOHelper.puts(:red)
exit :shutdown
end
end
end