4

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

PS:IO.puts 的行号,是指代码中写入 IO.puts 的那一行。

4

1 回答 1

8

您可能正在寻找__ENV__,它可以让您访问当前文件和行(除其他外)。你可以这样做:

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

编辑:正如 José 在评论中建议的那样,更好的方法是使用 logger 的元数据功能。目前,您只能添加: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]
于 2015-11-05T10:27:07.050 回答