从主管(它本身是由应用程序启动)启动gen_server
时,我遇到的问题是,当gen_server的start_link
没有返回{ok, ...}
但是{ {1}}我看到的唯一错误信息是:
{error, Reason}
未显示/记录终止的=INFO REPORT==== 20-Jan-2011::13:14:43 ===
application: foo
exited: {shutdown,{foo_app,start,[normal,[]]}}
type: temporary
。
有没有办法查看/记录这些错误返回给主管?
我正在使用的childspec就是例如:
Reason
修改:澄清
我了解error_logger并已使用它。问题不在于如何记录某些内容,而是如何让主管记录终止记录的原因,例如:记录以错误返回结束的日志以及返回的内容。
只是为了让这个也开始了,是的,我开始使用sasl的erlang:
{ok, {{one_for_one, 3, 10}, ...
{usb_mux_1,
{usb_mux, start_link,
[Some_Params]},
permanent,
10000,
worker,
[usb_mux]}, ...
答案 0 :(得分:3)
我自己发现了答案:
主管确实将错误退出记录为崩溃报告。
问题是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。