2015-11-05 209 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

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