如何在 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]
我需要获取 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]