Erlang 当主管子级从开始链接返回错误时,如何始终记录/显示错误原因?
当从一个主管启动Erlang 当主管子级从开始链接返回错误时,如何始终记录/显示错误原因?,erlang,otp,erlang-supervisor,gen-server,Erlang,Otp,Erlang Supervisor,Gen Server,当从一个主管启动genu服务器时(它本身是由一个应用程序启动的),我有一个问题,当genu服务器的start\u链接没有返回{ok,…}但是{error,Reason}时,我看到的唯一错误消息是: =INFO REPORT==== 20-Jan-2011::13:14:43 === application: foo exited: {shutdown,{foo_app,start,[normal,[]]}} type: temporary 未显示/记录终止的原因 是否有
genu服务器时(它本身是由一个应用程序启动的),我有一个问题,当genu服务器的start\u链接
没有返回{ok,…}
但是{error,Reason}
时,我看到的唯一错误消息是:
=INFO REPORT==== 20-Jan-2011::13:14:43 ===
application: foo
exited: {shutdown,{foo_app,start,[normal,[]]}}
type: temporary
未显示/记录终止的原因
是否有办法查看/记录这些返回给主管的错误
我使用的childspec是,例如:
{ok, {{one_for_one, 3, 10}, ...
{usb_mux_1,
{usb_mux, start_link,
[Some_Params]},
permanent,
10000,
worker,
[usb_mux]}, ...
编辑:澄清
我知道错误日志,并且已经在使用它了。问题不在于如何记录某些内容,而在于如何让主管记录其终止的原因,例如,记录谁终止并返回错误以及返回了什么
为了解决这个问题,是的,我开始使用sasl启动erlang:
-boot start_sasl
我自己刚刚发现了答案:
主管将错误退出记录为崩溃报告
问题是shell没有显示这些崩溃报告。只是让我困惑的是,它显示信息/警告和错误报告,但没有来自主管的进度报告和崩溃报告
如果我查看磁盘日志,其中有详细的崩溃报告:
10> rb:show(4).
CRASH REPORT <0.53.0> 2011-01-20 17:33:52
===============================================================================
Crashing process
initial_call {usb_mux,init,['Argument__1']}
pid <0.53.0>
registered_name []
error_info
{exit,{undef,[{usb_port,get_gw_hw_spec,[<0.59.0>]},
...
这意味着安装了多文件错误记录器(所有error\u logger\u mf.*
条目),但没有用于SASL事件的屏幕记录器
像这样更改条目可以修复它:
{sasl_error_logger, tty}, %% SASL reports to tty
从sasl手册页:
sasl报告:
格式化并向stdio写入主管报告、崩溃报告和进度报告
{sasl_error_logger, tty}, %% SASL reports to tty