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()