Packages
file_only_logger
0.1.36
0.2.70
0.2.69
0.2.65
0.2.64
0.2.63
0.2.62
0.2.61
0.2.60
0.2.59
0.2.58
0.2.57
0.2.56
0.2.55
0.2.54
0.2.53
0.2.52
0.2.51
0.2.50
0.2.49
0.2.48
0.2.47
0.2.45
0.2.44
0.2.43
0.2.42
0.2.41
0.2.40
0.2.39
0.2.38
0.2.37
0.2.36
0.2.35
0.2.34
0.2.33
0.2.31
0.2.30
0.2.29
0.2.28
0.2.27
0.2.26
0.2.25
0.2.24
0.2.23
0.2.22
0.2.21
0.2.20
0.2.19
0.2.18
0.2.17
0.2.16
0.2.15
0.2.14
0.2.13
0.2.12
0.2.11
0.2.10
0.2.9
0.2.8
0.2.7
0.2.6
0.2.5
0.2.4
0.2.3
0.2.2
0.2.1
0.1.58
0.1.57
0.1.55
0.1.54
0.1.53
0.1.52
0.1.51
0.1.50
0.1.49
0.1.47
0.1.46
0.1.45
0.1.44
0.1.43
0.1.42
0.1.41
0.1.40
0.1.39
0.1.38
0.1.37
0.1.36
0.1.35
0.1.34
0.1.33
0.1.32
0.1.31
0.1.30
0.1.28
0.1.27
0.1.26
0.1.25
0.1.24
0.1.23
0.1.22
0.1.21
0.1.20
0.1.19
0.1.18
0.1.17
0.1.16
0.1.15
0.1.14
0.1.13
0.1.12
0.1.11
0.1.10
0.1.9
0.1.8
0.1.7
0.1.6
0.1.5
0.1.4
0.1.3
0.1.0
A simple logger that writes messages to log files only (not to the console).
Current section
Files
Jump to
Current section
Files
lib/file/only/logger/proxy/try.ex
defmodule File.Only.Logger.Proxy.Try do
@moduledoc """
Removes or adds the console backend. Keeps trying in case of failures.
"""
use PersistConfig
alias File.Only.Logger.Log
@after_compile get_env(:after_compile)
@flush true
@times 7
@wait 10
@doc """
Removes the console backend. If it fails, will retry up to #{@times} times.
"""
@spec remove_backend :: :ok | {:error, atom}
def remove_backend do
case Logger.remove_backend(:console, flush: @flush) do
:ok ->
:ok
{:error, reason} ->
:ok = Log.warn(:unremoved, {@wait, @times, reason, __ENV__})
remove_backend(@times)
end
end
@doc """
Adds the console backend. If it fails, will retry up to #{@times} times.
"""
@spec add_backend :: :ok | {:error, atom}
def add_backend do
case Logger.add_backend(:console, flush: @flush) do
{:ok, _pid} ->
:ok
{:error, reason} ->
:ok = Log.warn(:unadded, {@wait, @times, reason, __ENV__})
add_backend(@times)
end
end
## Private functions
@spec remove_backend(non_neg_integer) :: :ok | {:error, atom}
defp remove_backend(0) do
:ok = Log.warn(:remains_unremoved, {@wait, @times, __ENV__})
{:error, :console_unremoved}
end
defp remove_backend(times_left) do
Process.sleep(@wait)
times_left = times_left - 1
case Logger.remove_backend(:console, flush: @flush) do
:ok ->
:ok = Log.warn(:now_removed, {@wait, @times - times_left, __ENV__})
{:error, reason} ->
:ok = Log.warn(:still_unremoved, {@wait, times_left, reason, __ENV__})
remove_backend(times_left)
end
end
@spec add_backend(non_neg_integer) :: :ok | {:error, atom}
defp add_backend(0) do
:ok = Log.warn(:remains_unadded, {@wait, @times, __ENV__})
{:error, :console_unadded}
end
defp add_backend(times_left) do
Process.sleep(@wait)
times_left = times_left - 1
case Logger.add_backend(:console, flush: @flush) do
{:ok, _pid} ->
:ok = Log.warn(:now_added, {@wait, @times - times_left, __ENV__})
{:error, reason} ->
:ok = Log.warn(:still_unadded, {@wait, times_left, reason, __ENV__})
add_backend(times_left)
end
end
end