为了调试,我需要获取 IO.puts 或 IO.inspect 或出现在 elixir 控制台上的任何其他类型的输出的行号。是否有内置功能?或者有没有其他简单的方法来实现同样的目标?
PS:IO.puts 的行号,是指代码中写入 IO.puts 的那一行。
为了调试,我需要获取 IO.puts 或 IO.inspect 或出现在 elixir 控制台上的任何其他类型的输出的行号。是否有内置功能?或者有没有其他简单的方法来实现同样的目标?
PS:IO.puts 的行号,是指代码中写入 IO.puts 的那一行。
您可能正在寻找__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]