elixir Logger for lists, tuples, etc

Your best bet is to use Logger.info "Here is some thing: #{inspect thing}". This way even if thing doesn't implement the String.Chars protocol, you still get something useful.


If the goal is to temporarily print something to the console instead of explicitly "logging" it, you can directly use IO.inspect/2, instead of using inspect/2 in a Logger argument.

IO.inspect(params)

It pretty-prints by default and since it returns back the input, you can pipe it in an existing chain with a label, which is very helpful when debugging:

result =
  numbers
  |> IO.inspect(label: "Input list")
  |> Enum.filter(& rem(&1, 3) == 0)
  |> IO.inspect(label: "Filtered to multiples of 3")
  |> Enum.map(& &1 * &1)
  |> IO.inspect(label: "Numbers Squared")
  |> Enum.sum()

Tags:

Logging

Elixir