Packages
log_reset
0.1.20
0.1.70
0.1.69
0.1.68
0.1.67
0.1.66
0.1.65
0.1.64
0.1.63
0.1.62
0.1.61
0.1.60
0.1.59
0.1.58
0.1.57
0.1.56
0.1.55
0.1.54
0.1.53
0.1.52
0.1.51
0.1.50
0.1.49
0.1.48
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.29
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.2
0.1.1
0.1.0
Resets configured log files.
Current section
Files
Jump to
Current section
Files
lib/log/reset.ex
defmodule Log.Reset do
@moduledoc """
Creates and clears configured log files.
"""
require Logger
@doc """
Creates and clears all log files.
"""
@spec clear_logs :: :ok
def clear_logs, do: log_paths() |> Enum.each(&clear_log/1)
@doc """
Creates and clears a log file.
"""
@spec clear_log(Path.t()) :: :ok
def clear_log(log_path) do
log_path = Path.expand(log_path)
dir_path = Path.dirname(log_path)
create_dir(dir_path)
case File.write(log_path, "") do
:ok -> info("Cleared log file", log_path)
{:error, reason} -> error(reason, "Couldn't clear log file", log_path)
end
end
@doc """
Lists all configured log paths.
"""
@spec log_paths :: [Path.t()]
def log_paths do
:logger
|> :application.get_env(:backends, [])
|> Enum.map(fn
{LoggerFileBackend, id} -> :application.get_env(:logger, id, nil)[:path]
_console? -> nil
end)
|> Enum.reject(&is_nil/1)
end
## Private functions
@spec create_dir(Path.t()) :: :ok
defp create_dir(dir_path) do
case File.mkdir_p(dir_path) do
:ok -> :ok
{:error, reason} -> error(reason, "Couldn't create directory", dir_path)
end
end
@spec info(String.t(), Path.t()) :: :ok
defp info(msg, path) do
Logger.info("""
\n#{msg}:
#{inspect(path)}
""")
end
@spec error(File.posix(), String.t(), Path.t()) :: :ok
defp error(reason, msg, path) do
Logger.error("""
\n#{msg}:
#{inspect(path)}
#{:file.format_error(reason)}
""")
end
end