       Logger.debug fn -> "expensive to calculate debug" end
 
   """
-  defmacro debug(chardata, metadata \\ []) do
-    macro_log(:debug, chardata, metadata, __CALLER__)
+  defmacro debug(chardata_or_fn, metadata \\ []) do
+    macro_log(:debug, chardata_or_fn, metadata, __CALLER__)
   end
 
   defp macro_log(level, chardata, metadata, caller) do

      Logger.warn fn -> "expensive to calculate warning" end

  """
  defmacro warn(chardata, metadata \\ []) do
    macro_log(:warn, chardata, metadata, __CALLER__)
  end

  @doc """

      Logger.info fn -> "expensive to calculate info" end

  """
  defmacro info(chardata_or_fn, metadata \\ []) do
    macro_log(:info, chardata_or_fn, metadata, __CALLER__)
  end

  @doc """
