Я использую лагер в приложении Erlang, и я иногда имею заявление журнала, как следующее:Как ~ 1024p иногда попадает в мои журналы?
?log_error("failed to create reward instance: ~1024p", Reason)
где Reason был возвращен из вызова предыдущей функции. Как я понимаю, ~ 1024p должен быть превращен в какой-то причине это, так что, даже если причина пустая строка, я бы ожидать
failed to create reward instance: ""
но иногда я получаю
failed to create reward instance: ~1024p
Я m просто интересно, может ли кто-нибудь объяснить это поведение. Заранее спасибо.
Edit: Макрос Определение 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}]).
. К сожалению, я пока недостаточно разбираюсь в синтаксических преобразованиях.
Спасибо.
Можете ли вы показать мне определение макроса 'log_error'? –
Извините. Добавлено определение log_error. – streetcornerlurker