import Kernel, except: [inspect: 2] defmodule LogfmtEx do @moduledoc ~S""" GenServer for persistent opts """ use GenServer alias LogfmtEx.Formatter def start_link(opts \\ []) do GenServer.start_link(__MODULE__, opts, name: __MODULE__) end @impl true def init(opts) do {:ok, opts} end @impl true def handle_call({:format, level, message, {date, time}, metadata}, _from, opts) do formatted_log = Formatter.format(level, message, {date, time}, metadata, opts) {:reply, formatted_log, opts} end @spec format(Logger.level(), any(), Logger.Formatter.time(), Keyword.t()) :: iodata() def format(level, message, {date, time}, metadata) do GenServer.call(__MODULE__, {:format, level, message, {date, time}, metadata}) end end