如何在 Elixir 的控制台输出中获取行号

How to get Line Numbers in Console Outputs in Elixir

我需要获取 IO.puts 或 IO.inspect 的行号或出现在 elixir 控制台上的任何其他类型的输出以进行调试。是否有内置功能?或者有没有其他简单的方法可以达到同样的目的?

P.S:By Line Number for IO.puts,我指的是代码中写IO.puts的那一行。

您可能正在寻找 __ENV__,这将使您能够访问当前文件和行(以及其他内容)。你可以这样做:

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

编辑:正如 José 在评论中所建议的那样,更好的方法是使用记录器的元数据功能。目前,您只能添加 :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]