Erlang проблема с использованием протоколирования ОТП - PullRequest
1 голос
/ 02 февраля 2012

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

У меня есть следующая строка запуска:

erl -pa ebin edit deps/*/ebin -boot start_sasl \
            -detached \
            -sasl sasl_error_logger "{file, \"priv/log/app.log\"}" \
            -sasl errlog_type all \
            -sname $APP_NAME \
            -s $APP_NAME

Но когда я говорю в своем приложении что-то вродеerror_logger:error_report("!!!!") или error_logger:error_msg("!!!!"), тогда в файле журнала ничего не печатается, что я делаю не так?

1 Ответ

3 голосов
/ 02 февраля 2012

Проблема очень проста. SASL регистрирует только отчеты PROGRESS, CRASH и SUPERVISOR (или так сказано в документации). Вы отправляете что-то, что является сообщением об ОШИБКЕ, которое не регистрируется. Если вы создаете сбой в процессе с поддержкой SASL, скажем

proc_lib:spawn(fun() -> exit(argh) end).

Тогда этот отчет должен появиться в вашем журнале. Я думаю, что mf регистратор берет все, но я могу ошибаться. Также требуется инструмент rb для чтения рассматриваемых файлов журналов. Хорошей альтернативой для реального приложения является использование приложения lager, написанного хорошими парнями из технологий Basho. Он предоставляет интерфейс, более похожий на syslog, а также обрабатывает типы журналов ошибок SASL. Кроме того, он не разрушит ваш сервер, если вы попытаетесь зарегистрировать очень большое состояние процесса, как это будет делать SASL по умолчанию.

...