2011-01-20 4 views
2

(アプリケーションによって開始され、それ自体)監督からgen_server年代を起動すると、私はgen_serverのstart_link{ok, ...}が、{error, Reason}を返さないとき、私は見るだけで、エラーメッセージがあるという問題があります。スーパーバイザの子がstart_linkからエラーを返すときに、エラーの理由を常に記録/表示する方法はありますか?

=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 

答えて

3

だけの答えを自分自身を発見しました:

上司が本当にクラッシュとしてエラー終了をログに記録されます報告する。

問題は、シェルがこれらのクラッシュレポートを表示しないことです。私を混乱させるだけで、情報/警告とエラーレポートが表示されますが、スーパーガバナーからのプログレスレポートやクラッシュレポートは表示されません。私は、ディスク上のログを見ると

あり、詳細なクラッシュレポートがあります:

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ファイル内ommissionだった画面に表示されていなかった理由は、 :

マルチファイルerroroロガーinstallen(すべて error_logger_mf_*エントリが)が、無SASLイベントの画面ロガーであった意味
[{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} 
    ]}]. 

がsasl_report_tty_h:SASLのmanページから

 {sasl_error_logger, tty}, %% SASL reports to tty 

をこのようなエントリを変更し

はそれを固定

フォーマットとするスーパーバイザーレポート、クラッシュレポートや進捗状況の報告を書き込み、 stdio。

関連する問題