2
我需要獲取IO.puts或IO.inspect的行號或elixir控制檯上出現的任何其他類型的輸出以進行調試。這是否有內置功能?或者有沒有其他簡單的方法來實現?如何在Elixir控制檯輸出中獲取行號
P.S:通過IO.puts的行號,我的意思是IO.puts寫入代碼的行。
我需要獲取IO.puts或IO.inspect的行號或elixir控制檯上出現的任何其他類型的輸出以進行調試。這是否有內置功能?或者有沒有其他簡單的方法來實現?如何在Elixir控制檯輸出中獲取行號
P.S:通過IO.puts的行號,我的意思是IO.puts寫入代碼的行。
您可能正在尋找__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]
請記住,'記錄器'已經在元數據中包括文件和行。您可以通過將文件和行添加到記錄器中的元數據配置中,將它包含在報告中。 –
@JoséValim你的意思是這個嗎? 'config:logger,:console,metadata:[:module,:function,:line]' –
不幸的是,用這種方式添加文件似乎是不可能的。 –