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]' –
不幸的是,用这种方式添加文件似乎是不可能的。 –