在lager.elr(https://github.com/basho/lager的主要模块)中没有名称为"debug"的函数,但我有一个从lager模块调用debug函数的应用程序,如:lager:debug(Str,参数)
我是Erlang的初学者但是我知道当我们从模块lile"mymodule:myfunction"调用一个函数时,文件mymodule.erl中应该有一个名为"myfunction"的函数但是在这种情况下我在lager.erl中搜索函数"调试"我找不到它.
你没有看到提及的lager:debug/2原因是因为lager使用了解析变换.因此,在编译代码时,它通过lagers parse转换进行馈送,并且调用lager:debug/2替换为另一个模块函数的另一个调用.
如果使用正确的分析变换选项编译代码,则代码可以正常工作.
您在 lager.erl 文件中看不到它,因为它位于 lager.erl 顶部包含的 lager.hrl 文件中。Erlang 允许您使用 -include("filename.hrl") 指令包含文件。按照惯例,包含文件以 hrl 扩展名结尾,但它实际上可以是任何内容。
https://github.com/basho/lager/blob/master/include/lager.hrl