如何在启动Inets httpd时获取有关错误的更多信息?

时间:2014-03-23 17:05:06

标签: erlang inets

我用以下内容启动了Inets http:

> inets:start(httpd, [{port, 8060}, {server_name, "myserver"},
> {server_root, "/Users/jonas/code"},                         
> {document_root, "/Users/jonas/code/mydocs"},             
> {bind_address, {192, 168, 2, 5}}]).                         
{error,inets_not_started}

所以我唯一的错误信息是{error,inets_not_started}。有什么方法可以获得更多关于出了什么问题的信息吗?

4 个答案:

答案 0 :(得分:2)

首先,要解决您的问题,只需启动inets应用程序(错误原因表明它未启动):

inets:start().

其次,一般来说,启动SASL application可以提高Erlang / OTP错误/崩溃的可读性 - 但这不是这种情况。

答案 1 :(得分:2)

您需要先致电inets:start/0。有关详细信息,请参阅the inets documentation

答案 2 :(得分:1)

这是一个很好的问题,因为不幸的是inets:start/[0,1,2,3]函数的重载,并且httpc documentation并不是很清楚启动inets会自动启动httpc服务也是

特别是在打开时,仅跳到HTTP CLIENT SERVICE START/STOP部分即可快速上手,从而丢失了the module description中的音符。

  • inets:start/[0,1]使用默认配置文件inets来启动httpc应用程序本身服务default(仅记录在案)在httpc中)。

  • inets:start/[2,3](应称为 start_service )启动可以在inets(即{{1})之上运行的服务之一},ftpctftphttpc一旦httpd应用程序已经启动

inets
start() ->

启动Inets应用程序。

start(Type) -> ok | {error, Reason}
start(Service, ServiceConfig) -> {ok, Pid} | {error, Reason}

之后动态启动Inets服务 Inets应用程序已启动
(使用inets:start/[0,1])。


关于start(Service, ServiceConfig, How) -> {ok, Pid} | {error, Reason}

的注释

httpc module documentation的顶部开始:

启动Inets应用程序时,将启动默认配置文件的管理器进程。此API中未明确使用配置文件的功能将访问默认配置文件。

也就是说,httpc服务将使用名为httpc的默认配置文件自动开始。

default

有趣的是,使用不存在的配置文件时,错误消息为1> inets:start(). ok 2> httpc:get_options(all, default). {ok,[{proxy,{undefined,[]}}, {https_proxy,{undefined,[]}}, {pipeline_timeout,0}, {max_pipeline_length,2}, {max_keep_alive_length,5}, {keep_alive_timeout,120000}, {max_sessions,2}, {cookies,disabled}, {verbose,false}, {ipfamily,inet}, {ip,default}, {port,default}, {socket_opts,[]}, {unix_socket,undefined}]} 3> 3> inets:start(httpc, [{profile, lofa}]). {ok,<0.95.0>} 4> 5> httpc:get_options(all, default). {ok,[...]} 6> httpc:get_options(all, lofa). {ok,[...]}

inets_not_started

答案 3 :(得分:0)

  

start(Service,ServiceConfig,How) - &gt; {ok,Pid} | {错误,原因}

Dynamically starts an inets service after the inets application has been started. 

所以你需要先调用这个函数。

  

start() - &gt;   开始(类型) - &gt;好的{错误,原因}

类型: Type = permanent |瞬态|临时

 Starts the Inets application.