2016-01-26 6 views
8

Wie protokollieren Sie eine Karte/Strukturtyp in ELixir, ohne protocol String.Chars zu implementieren?So protokollieren Sie eine Karte/Struktur in Elixir

require Logger 
Logger.debug %{my: "map"} 
** (Protocol.UndefinedError) protocol String.Chars not implemented for %{my: "map"} 
    (elixir) lib/string/chars.ex:3: String.Chars.impl_for!/1 
    (elixir) lib/string/chars.ex:17: String.Chars.to_string/1 

Antwort

17

können Sie inspect/2 verwenden - die Datenstruktur in eine Algebra Dokument https://hexdocs.pm/elixir/Kernel.html#inspect/2

Es analysiert, die mit dem Logger gedruckt werden kann.

iex(4)> Logger.debug inspect(%{a: 1}) 
08:47:32.776 [debug] %{a: 1} 
:ok 
+1

Ich dachte, inspizieren logische schien, hatte aber IO.inspect benutze! Nur zur Klarstellung, es ist Kernel.inspect – Krut

+0

Der oben gezeigte Link ist zu IO.inspect. Der eigentliche Link zu Kernel.inspect/2 ist hier - http://elixir-lang.org/docs/stable/elixir/Kernel.html#inspect/2 – sat

+0

Verdammt ich tippte "IO.inspect" wie ein Derp. – igorgue

0

Elixir Art und Weise:

iex(3)> %{a: 1} |> inspect |> Logger.debug 

23:20:30.265 [debug] %{a: 1} 
:ok 
Verwandte Themen