Erlang应用程序启动/2无法执行

Erlang应用程序启动/2无法执行,erlang,otp,Erlang,Otp,这是我能想到的最基本的应用程序,我无法理解为什么应用程序模块函数的start/2不会记录消息。以下是我所做的: 1) 应用程序配置文件(test_app.app): 2) 应用程序模块(测试应用程序erl): 然后我编译并测试如下: 1> application:start(test_app). ok 2> test_app:test(). ==INFO REPORT==== 27-Oct-2013::19:53:29 === "here at APP START 2" 我所期望的

这是我能想到的最基本的应用程序,我无法理解为什么应用程序模块函数的start/2不会记录消息。以下是我所做的:

1) 应用程序配置文件(test_app.app):

2) 应用程序模块(测试应用程序erl):

然后我编译并测试如下:

1> application:start(test_app).
ok
2> test_app:test().
==INFO REPORT==== 27-Oct-2013::19:53:29 ===
"here at APP START 2"
我所期望的是,application:start(test_app)将执行start/2功能,并记录消息,类似于test/0功能


事实上,我有一个更复杂的例子,我启动了一个主管,但类似地,我在app模块中创建的api会导致一个错误,表明start_链接不起作用。如果我调用一个启动监控程序的测试函数,那么它就会工作

您需要为
.app
文件添加一个额外选项,该文件提供应用程序回调模块和启动参数。没有隐式回调模块名称,如果没有给出,则不会启动任何进程。该选项为
{mod,{CallBackMod,StartArgs}}
,因此整个
.app
文件将变为:

{application,test_app,
 [{description,"Test App"},
  {vsn,0.9},
  {applications,[kernel,stdlib]},
  {modules,[test_app,log_utils]},
  {registered,[test_app]},
  {mod,{test_app,[]}}]}.
第二个元素,
test\u app
(在您的例子中)是应用程序的名称,而不是回调模块;它们不必是一样的。如果给出回调,则在应用程序启动时调用
Mod:start/2
,在应用程序停止时调用
Mod:stop/1

请注意,应用程序启动时不必运行任何进程,例如,
stdlib
应用程序不必运行任何进程


您将在中找到更好的描述。

您需要在
.app
文件中添加一个额外选项,该文件提供应用程序回调模块和启动参数。没有隐式回调模块名称,如果没有给出,则不会启动任何进程。该选项为
{mod,{CallBackMod,StartArgs}}
,因此整个
.app
文件将变为:

{application,test_app,
 [{description,"Test App"},
  {vsn,0.9},
  {applications,[kernel,stdlib]},
  {modules,[test_app,log_utils]},
  {registered,[test_app]},
  {mod,{test_app,[]}}]}.
第二个元素,
test\u app
(在您的例子中)是应用程序的名称,而不是回调模块;它们不必是一样的。如果给出回调,则在应用程序启动时调用
Mod:start/2
,在应用程序停止时调用
Mod:stop/1

请注意,应用程序启动时不必运行任何进程,例如,
stdlib
应用程序不必运行任何进程

您可以在中找到更好的描述

{application,test_app,
 [{description,"Test App"},
  {vsn,0.9},
  {applications,[kernel,stdlib]},
  {modules,[test_app,log_utils]},
  {registered,[test_app]},
  {mod,{test_app,[]}}]}.