Запуск браузера отчетов (rb) для отчетов об ошибках SASL в удаленной оболочке - PullRequest
3 голосов
/ 01 марта 2010

Люди, мы сейчас используем много экземпляров Erlang, и мы видим, что ошибки были выброшены, и хотели бы их изучить ...

Обычно мы подключаемся к работающему экземпляру с помощью удаленной оболочки и таким образом получаем доступ к консоли Erlang, но это не работает для rb или сообщений об ошибках ...

Как получить удаленный доступ к сообщениям об ошибках SASL, не отключая сервер, не отключая его и не глядя на оболочку?

Ответы [ 3 ]

4 голосов
/ 01 марта 2010

Я столкнулся с этим в R11B и закончил тем, что создал клон rb, который работает через удаленную оболочку (http://github.com/archaelus/erms/blob/master/src/erms_rb.erl). Хитрость в том, чтобы обнаружить group_leader вызывающего и затем отправьте туда вывод .

Вероятно, мне следует привести это в порядок и отправить его как патч для rb.

2 голосов
/ 28 января 2011

Я запускаю свою удаленную оболочку через -remsh (${ROOTDIR}/bin/erl -name shell@${NODE_IP} -remsh ${NODE_NAME}). Оказавшись там, я установил rb_server group_leader на текущий group_leader оболочки, и rb впредь выводит его вывод на активную оболочку:

(cacherl@192.168.2.31)1> rb:start().
{ok,<0.213.0>}
(cacherl@192.168.2.31)2> group_leader(group_leader(),erlang:whereis(rb_server)).
true
(cacherl@192.168.2.31)3> rb:show(1).

PROGRESS REPORT  <0.77.0>                                   2011-01-28 17:49:23
===============================================================================
supervisor                                                     {local,sasl_sup}
started
         [{pid,<4543.96.0>},
         {name,rb_server},
         {mfargs,{rb,start_link,[[]]}},
         {restart_type,temporary},
         {shutdown,brutal_kill},
         {child_type,worker}]

ok
(cacherl@192.168.2.31)4> 

РЕДАКТИРОВАТЬ: для удобства инкапсулировать в функцию:

%% @doc Start the report browser and reset its group-leader. 
%% For use in a remote shell
start_remote_rb() ->
    {ok, Pid} = rb:start(),
    true = erlang:group_leader(erlang:group_leader(), Pid),
    ok.

С уважением, Том

1 голос
/ 02 марта 2010

Я не использовал rb, поэтому я мало что знаю об этом, но, возможно, это все равно вам поможет:

Вы можете настроить обработчик отчетов об ошибках SASL для записи на диск, см. http://www.erlang.org/doc/man/sasl_app.html:

sasl_error_logger = Value <optional>

Value является одним из:

...

{file,FileName}

Устанавливает sasl_report_file_h в регистраторе ошибок. Это заставляет все отчеты идти в файл FileName. FileName - это строка.

...

Я также смутно помню, что есть способ установить собственный обратный вызов обработчика, но, к сожалению, я не могу найти его прямо сейчас.

...