Packages
log_reset
0.1.1
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.
"""
@doc """
Creates and clears a 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 -> :ok
{: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
Application.get_all_env(:logger)
|> Stream.filter(fn {_key, value} -> Keyword.keyword?(value) end)
|> Stream.map(fn {_key, value} -> value[:path] 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 error(File.posix(), String.t(), Path.t()) :: :ok
defp error(reason, msg, path) do
import IO.ANSI, only: [format: 1]
import IO, only: [puts: 1]
[:light_red_background, :light_white, "#{msg}:"] |> format() |> puts()
[:light_yellow, "#{inspect(path)}"] |> format() |> puts()
[:light_yellow, "=> #{:file.format_error(reason)}"] |> format() |> puts()
end
end