2008-11-17 19 views

Respuesta

8

Apache Commons registro no está diseñado para aplicaciones de registro general. Está destinado a ser utilizado por bibliotecas o API que no quieren forzar una implementación de inicio de sesión en el usuario de la API.

También hay problemas de carga con el registro de Commons.

Elija una de las [muchas] API api, la más utilizada probablemente sea log4j o Java Logging API.

Si desea la independencia de la implementación, es posible que desee considerar SLF4J, por el autor original de log4j.

Al elegir una implementación, utilice los niveles/severidad de registro dentro de esa implementación consistentemente, de modo que la búsqueda/filtrado de registros sea más fácil.

+0

Estos suelen tener funciones avanzadas, como el inicio de sesión automático de la fuente y el filtrado por nivel O ubicación de origen. Esto hace que la depuración sea mucho más fácil. ¡Usa uno de estos! (también echa un vistazo a Chainsaw) –

0

Realmente no hay mejor práctica para registrar un error. Básicamente solo necesita seguir un patrón consistente (dentro del software/compañía/etc.) que proporcione suficiente información para rastrear el problema. Por ejemplo, es posible que desee realizar un seguimiento de las veces, el método, los parámetros, método de llamada, etc.

Siempre que usted no acaba de imprimir "Error en"

2

La forma más fácil de registrar los errores en una el formato coherente es usar un marco de registro tal como Log4j (suponiendo que esté usando Java). Es útil incluir una sección de registro en los estándares de su código para asegurarse de que todos los desarrolladores sepan qué se debe registrar. Lo bueno de la mayoría de los marcos de registro es que tienen diferentes niveles de registro para que pueda controlar qué tan detallado es el registro entre desarrollo, prueba y producción.

2

Una buena práctica es utilizar el marco java.util.logging

A continuación, puede registrar los mensajes en cualquiera de estos formatos

log.warning(".."); 
log.fine(".."); 
log.finer(".."); 
log.finest(".."); 

O

log.log(Level.WARNING, "blah blah blah", e); 

continuación, puede utilizar a logging.properties (ejemplo a continuación) para alternar entre los niveles de registro y hacer todo tipo de cosas inteligentes, como iniciar sesión en archivos, con rotación, etc.

handlers = java.util.logging.ConsoleHandler 

.level = WARNING 

java.util.logging.ConsoleHandler.level = ALL 

com.example.blah = FINE 
com.example.testcomponents = FINEST 

Marcos como log4j y otros deben evitarse en mi opinión, Java ya tiene todo lo que necesita.

EDITAR

Esto se puede aplicar como una práctica general para cualquier lenguaje de programación. Ser capaz de controlar todos los niveles de registro desde un único archivo de propiedades suele ser muy importante en las aplicaciones empresariales.

2

Algunos sugirieron mejores prácticas

  • Utilice un marco de registro. Esto le permitirá:

    • cambiar fácilmente el destino de sus mensajes de registro
    • mensajes registro
    • filtro en función de la gravedad
    • Apoyo mensajes de registro internacionalizados
  • Si está utilizando Java, a continuación, slf4j ahora se prefiere a Jakarta commons logging como la fachada de registro.

  • Como se indicó slf4j es una fachada, y luego tiene que elegir una implementación subyacente. Ya sea log4j, java.util.logging o 'simple'.

  • Siga los consejos de su marco para asegurar expensive logging operations no se llevan a cabo sin necesidad

0

La API de registro común de apache, como se mencionó anteriormente, es un gran recurso. En referencia a java, también hay un flujo de salida de error estándar (System.err).

Directamente desde la API Java:

Esta corriente ya está abierto y listo para aceptar datos de salida.

Normalmente esta corriente corresponde a salida de pantalla u otro destino de salida especificado por el entorno de acogida o usuario. Por convención, esta corriente de salida se utiliza para mostrar mensajes de error u otra información que deben venir a la atención inmediata de un usuario, incluso si la corriente principal producto , el valor de la variable a cabo, se ha redirigido a un archivo u otro destino que es típicamente no se monitorea continuamente.

22

Iniciar sesión directamente en la consola es horrendo y, francamente, la marca de un desarrollador inexperto. La única razón para hacer este tipo de cosas es 1) él o ella no tiene conocimiento de otros enfoques, y/o 2) el desarrollador no ha pensado en lo que sucederá cuando su código se implemente en un sitio de producción, y cómo se mantendrá la aplicación en ese punto. Tratar con una aplicación que está registrando 1GB/día o más de registro de depuración completamente innecesario es enloquecedor.

La mejor práctica generalmente aceptada es utilizar un marco de registro que tiene conceptos de:

  1. diferentes objetos de registro - Diferentes clases/modules/etc pueden iniciar sesión a diferentes registradores, por lo que puede optar por aplicar diferentes registro configuraciones a diferentes porciones de la aplicación.
  2. Diferentes niveles de registro: para modificar la configuración de registro solo para registrar errores en producción, para registrar todo tipo de información de depuración y rastreo en un entorno de desarrollo, etc.
  3. Diferentes salidas de registro: el marco debe permitir configure donde se envía la salida de registro sin requerir ningún cambio en la base de código. Algunos ejemplos de diferentes lugares es posible que desee enviar la salida del registro de archivos son, archivos que pase el cursor sobre basa en la fecha/tamaño, bases de datos, correo electrónico, sumideros de comunicación remota, etc.
  4. El marco de registro nunca debe Nunca Nunca tiro cualquier excepción o error del código de registro. Su aplicación no debería dejar de cargarse o no iniciarse porque el marco de trabajo de registro no puede crear su archivo de registro u obtener un bloqueo en el archivo (a menos que sea un requisito crítico, tal vez por razones legales, para su aplicación).

El marco de registro eventual que utilizará, por supuesto, dependerá de su plataforma. Algunas opciones comunes:

0

Aparte de las consideraciones técnicas de otras respuestas, es aconsejable registro de un mensaje significativo y tal vez algunas medidas para evitar el error en el futuro Dependiendo de los errores, por supuesto.

Podría obtener más de un error de E/S cuando el mensaje indique algo como "No se pudo leer desde el archivo X, no tiene el permiso correspondiente".

Ver más ejemplos en SO o search the web.

Cuestiones relacionadas