lib/log/reset.ex

defmodule Log.Reset do
  @moduledoc """
  Resets configured log files.
  """

  alias __MODULE__.ConfigPaths.Server
  alias __MODULE__.ConfigPaths

  @type levels :: :all | :none | [Logger.level()]

  @doc """
  Returns a list of configured log paths.
  """
  @spec log_paths :: [Path.t()]
  def log_paths, do: GenServer.call(Server, :log_paths)

  @doc """
  Returns a map of configured log paths.
  """
  @spec config_paths :: ConfigPaths.t()
  def config_paths, do: GenServer.call(Server, :config_paths)

  @doc """
  Refreshes the map of configured log paths.
  """
  @spec refresh :: ConfigPaths.t()
  def refresh, do: GenServer.call(Server, :refresh)

  @doc """
  Resets the configured log files of the given `levels`.
  """
  @spec reset_logs(levels) :: :ok
  def reset_logs(levels) do
    GenServer.call(Server, {:reset_logs, levels})
  end
end