Packages
log_reset
0.1.11
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 backend log files.
"""
require Logger
@doc """
Creates and clears a backend log file.
"""
@spec clear_log(Path.t() | nil) :: :ok
def clear_log(nil), do: :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 backend log paths.
"""
@spec log_paths :: [Path.t() | nil]
def log_paths do
:logger
|> :application.get_env(:backends, [])
|> Enum.map(fn {LoggerFileBackend, backend_name} ->
:application.get_env(:logger, backend_name, nil)[:path]
end)
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