我在 erlang 应用程序中使用 lager,偶尔会有如下日志语句:
?log_error("failed to create reward instance: ~1024p", Reason)
其中原因是从先前的函数调用返回的。据我了解,~1024p 应该变成任何原因,所以即使原因是一个空字符串,我也会期望
failed to create reward instance: ""
但有时我得到
failed to create reward instance: ~1024p
我只是想知道是否有人可以解释这种行为。提前致谢。
编辑: ?log_error 的宏定义是:
-define(log_error(Message, Arguments),
?do_log_error(Message, Arguments)
).
-define(do_log_error(Message, Arguments),
?log(error, Message, Arguments)).
-define(log(Level, Message, Arguments), ok = lager:Level(Message, Arguments)).
这意味着?log_debug("...", Reason)
调用lager:error("...",Reason)
到底。我没有看到error
lager.erl 中的函数。我猜它一定与-compile([{parse_transform, lager_transform}]).
. 不幸的是,我对解析转换还不够了解。
谢谢。