~1024p 有时如何进入我的大型日志?
How does ~1024p get into my lager logs sometimes?
我在 erlang 应用程序中使用 lager,偶尔会有如下日志语句:
?log_error("failed to create reward instance: ~1024p", Reason)
其中 Reason 是从之前的函数调用中返回的。据我所知,~1024p 应该变成 Reason 是什么,所以即使 Reason 是一个空字符串,我也会期望
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)
。我在 lager.erl 中没有看到函数 error
。我猜它一定与 -compile([{parse_transform, lager_transform}]).
有关。不幸的是,我对解析转换还不够了解。
谢谢。
您的宏的参数应该始终是一个列表,一个用于您的格式字符串中的每个格式说明符,因为这是您的宏调用的 lager
函数所需要的:
?log_error("failed to create reward instance: ~1024p", [Reason])
我在 erlang 应用程序中使用 lager,偶尔会有如下日志语句:
?log_error("failed to create reward instance: ~1024p", Reason)
其中 Reason 是从之前的函数调用中返回的。据我所知,~1024p 应该变成 Reason 是什么,所以即使 Reason 是一个空字符串,我也会期望
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)
。我在 lager.erl 中没有看到函数 error
。我猜它一定与 -compile([{parse_transform, lager_transform}]).
有关。不幸的是,我对解析转换还不够了解。
谢谢。
您的宏的参数应该始终是一个列表,一个用于您的格式字符串中的每个格式说明符,因为这是您的宏调用的 lager
函数所需要的:
?log_error("failed to create reward instance: ~1024p", [Reason])