2015-03-09 36 views
19

Ben teftiş dizeleri iksiri Kaydedici, vb

> str = "string" 
> Logger.info "Here is a #{str}" 
[info] Here is a string 

Ama bir liste oturum açtığınızda, bu görünmüyor için iksir logger kullanabilirsiniz oldukça

> list = [1,2,3,4,5] 
> Logger.info "Here is a list: #{list}" 
[info] Here is a list: ^A^B^C^D^E^F 

Ben oturum açtığınızda anahtar kelime listesi, bu hataları

> kwl = [a: "apple", b: "banana"] 
> Logger.info "Here is a keyword list: #{kwl}" 
    ** (ArgumentError) argument error 
    (stdlib) :unicode.characters_to_binary([a: "apple", b: "banana"]) 
    (elixir) lib/list.ex:555: List.to_string/1 

nasıl Elixir'in içinde dizeleri dışındaki listeler, dizilerini ve veri türlerini logger mı?

cevap

41

En iyi bahis Logger.info "Here is some thing: #{inspect thing}" kullanmaktır. Bu şekilde, thing, String.Chars protokolünü uygulamıyor olsa bile, yine de yararlı bir şey elde edersiniz.

+0

sayesinde o çalıştı !!! – User314159

+5

Bir veri yapısını göstermek istiyorsanız, incelemeniz kesinlikle yoldur. to_string tasarım tarafından daha kısıtlıdır. :) –