2011-02-07 16 views
38

Tengo un programa que estoy escribiendo para el que quiero escribir un recurso de registro personalizado (por ejemplo, diagnóstico, aviso, advertencia, error).¿Debo registrar mensajes en stderr o stdout?

¿Debo estar utilizando la corriente stdout o stderr para hacer esto? Es una especie de intérprete y el usuario puede pedirle que imprima el resultado.

Editar: favor Stop Me recomendar marcos madereras :(

+0

Si usa un lenguaje como java, ¿por qué no utilizar uno de los marcos de registro famosos, como log4j? – flash

+0

Realmente recomiendo que mires algunas bibliotecas de registro antes de pasar el tiempo implementando el registro. Si nos informa en qué idioma está escribiendo, estoy seguro de que habrá muchas sugerencias. –

+0

¿Qué idioma estás usando? – CloudyMarble

Respuesta

30

salida normal (el resultado real de la ejecución del programa) debe ir en stdout, cosas como usted ha mencionado (por ejemplo, diagnóstico, aviso, advertencia, error) en stderr.

Si no hay una "salida regular", diría que realmente no importa cuál elija. Podría argumentar que el registro es la única salida, por lo que debería ir a stdout. podría argumentar que sigue siendo "información excepcional" que debería ir al stderr.

+0

Como es un intérprete, esperaría que la mayoría de los usuarios imprima algo en 'stdout'. Puede tener soporte para imprimir en 'stderr', pero supongo que es su propio funeral ... – rfw

8

¿Escribe algo más al stdout? Si la respuesta es Yes, entonces sería bastante difícil para alguien distinguir entre flujo normal y errores en el medio del archivo que se usó para redirigir desde stdout.

¿Qué ocurre si se usa stdout como entrada para otro programa? ¿Podrá analizar esta información de depuración? En este caso, sería bueno escribir solo errores críticos en stderr. Si necesita escribir algo más, puede considerar escribir en un archivo de registro adicional.

Cuestiones relacionadas