当主管子进程从start_link返回错误时,如何始终记录/显示错误原因?

从主管(它本身是由应用程序启动)启动
gen_server
时,我遇到的问题是,当gen_server的
start_link
不返回
{ok, ...}
{error, Reason}
时,我看到的唯一错误消息是:
=INFO REPORT==== 20-Jan-2011::13:14:43 ===
    application: foo
    exited: {shutdown,{foo_app,start,[normal,[]]}}
    type: temporary
未显示/记录终止的
Reason
。 有没有办法查看/记录这些错误返回给主管? 我正在使用的childspec是:
{ok, {{one_for_one, 3, 10},  ... 
    {usb_mux_1, 
    {usb_mux, start_link, 
    [Some_Params]},
    permanent, 
    10000, 
    worker, 
    [usb_mux]}, ...
编辑:澄清 我知道error_logger并已经使用它。问题不在于如何记录某些内容,而是如何让主管记录终止记录的原因,例如:记录以错误返回结束的日志以及返回的内容。 而且只是为了让这个也开始,是的,我开始使用sasl的erlang:
 -boot start_sasl
    
已邀请:
刚刚发现了答案: 主管确实将错误退出记录为崩溃报告。 问题是shell没有显示这些崩溃报告。只是为了让我困惑,它显示了信息/警告和错误报告,但没有来自主管的progess报告和崩溃报告。 如果我查看磁盘日志,那里会有一个详细的崩溃报告:
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>]},
...
SASL事件未在屏幕上显示的原因是
-config
文件中的省略,如下所示:
[{sasl, [
     {sasl_error_logger, false},    %% no SASL error logger installed
     {error_logger_mf_dir,"./log"}, 
     {error_logger_mf_maxbytes,10485760}, % 10 MB
     {error_logger_mf_maxfiles, 10}
     ]}].
这意味着有一个多文件erroro logger installen(所有
error_logger_mf_*
条目)但没有用于SASL事件的屏幕记录器。 像这样更改条目修复它:
     {sasl_error_logger, tty},  %% SASL reports to tty
从sasl手册页:   sasl_report_tty_h:      将管理程序报告,崩溃报告和进度报告格式化并写入stdio。     

要回复问题请先登录注册