Cómo iniciar sesión siempre / mostrar la razón de error cuando un error del supervisor niño regresa de START_LINK?
-
13-10-2019 - |
Pregunta
Al iniciar gen_server
de de un supervisor (que a su vez se inicia por una aplicación) tengo el problema de que cuando el start_link
del gen_server no vuelve {ok, ...}
pero {error, Reason}
el único mensaje de error que veo es:
=INFO REPORT==== 20-Jan-2011::13:14:43 ===
application: foo
exited: {shutdown,{foo_app,start,[normal,[]]}}
type: temporary
El Reason
que por terminación no se muestra / registrado.
¿Hay una manera de ver / log estos retornos de error al supervisor?
El childspec que estoy usando es por ejemplo:.
{ok, {{one_for_one, 3, 10}, ...
{usb_mux_1,
{usb_mux, start_link,
[Some_Params]},
permanent,
10000,
worker,
[usb_mux]}, ...
Editar: Aclaración
Me sabe de error_logger y usarlo ya. La cuestión no es cómo conseguir algo, pero registra cómo conseguir el supervisor para registrar la razón de que la terminación, por ejemplo, log que termina con un retorno de error y lo que no lo devuelva.
Y sólo para conseguir esto también fuera del camino, sí que empiezo Erlang con SASL en:
-boot start_sasl
Solución
Así descubrió la respuesta a mí mismo:
El supervisor está realmente registrando la salida de error que informe de bloqueo.
El problema es el shell no muestra estos informes de fallos. Sólo para confundirla muestra informes de información / advertencia y error, pero no hay informes progess e informes de errores desde el supervisor.
Si miro en el registro en el disco hay un informe detallado accidente no:
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>]},
...
La razón de los acontecimientos SASL no se muestran en la pantalla era una omisión en el archivo -config
, que veía así:
[{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}
]}].
Significado hubo un multi-archivo erroro registrador installen (todas las entradas error_logger_mf_*
), pero no en la pantalla del registrador de eventos SASL.
Cambio de la entrada como esta fijado que:
{sasl_error_logger, tty}, %% SASL reports to tty
Desde la página de manual sasl:
sasl_report_tty_h:
Formatos y escribe informes supervisor, informes de fallos o informes de progreso a stdio.