~1024p有时如何进入我的大型日志?

时间:2015-02-16 21:27:11

标签: erlang lager

我在erlang应用程序中使用lager,偶尔会有以下日志语句:

?log_error("failed to create reward instance: ~1024p", Reason)

从上一个函数调用返回Reason。据我所知~1024p应该变成什么原因,所以即使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}]).有关。不幸的是,我还不太了解解析变换。

感谢。

1 个答案:

答案 0 :(得分:1)

宏的参数应该始终是一个列表,格式字符串中的每个格式说明符都有一个列表,因为这就是宏调用的lager函数所需要的:

?log_error("failed to create reward instance: ~1024p", [Reason])