2015-11-05 51 views
2

我需要獲取IO.puts或IO.inspect的行號或elixir控制檯上出現的任何其他類型的輸出以進行調試。這是否有內置功能?或者有沒有其他簡單的方法來實現?如何在Elixir控制檯輸出中獲取行號

P.S:通過IO.puts的行號,我的意思是IO.puts寫入代碼的行。

回答

4

您可能正在尋找__ENV__,它可以讓您訪問當前文件和行(除其他外)。你可以做這樣的事情:

Logger.debug("#{__ENV__.file}:#{__ENV__.line}: #{inspect some_value}") 

編輯:何塞的意見建議,更好的方式來做到這一點是使用記錄器的元數據功能。此刻,你只能添加:module:function:line鍵:

# config/config.exs 

config :logger, :console, metadata: [:module, :function, :line] 

但是,我做了一個PR添加:file鍵也是如此。它已經合併,應該與下一個版本的Elixir一起發佈。隨着新版本,你可以做

# config/config.exs 

config :logger, :console, metadata: [:file, :line] 
+0

請記住,'記錄器'已經在元數據中包括文件和行。您可以通過將文件和行添加到記錄器中的元數據配置中,將它包含在報告中。 –

+0

@JoséValim你的意思是這個嗎? 'config:logger,:console,metadata:[:module,:function,:line]' –

+0

不幸的是,用這種方式添加文件似乎是不可能的。 –

相關問題