Introducción
Si se produce un error en un sitio web o sistema, por supuesto, es útil registrarlo y mostrar al usuario un mensaje cortés con un código de referencia para el error.
Y si tiene muchos sistemas, no desea que esta información se distribuya: es bueno tener un solo lugar centralizado para ello.
En el nivel más simple, todo lo que se necesita es una identificación incremental y un volcado serializado de los detalles del error. (Y posiblemente el "lugar centralizado" sea una bandeja de entrada de correo electrónico).
En el otro extremo del espectro, quizás haya una base de datos completamente normalizada que también le permite presionar un botón y ver un gráfico de errores por día, o identificar cuál es el tipo de error más común en el sistema X, si el servidor A tiene más base de datos errores de conexión que el servidor B, y así sucesivamente.
A lo que me refiero aquí es registrar errores / excepciones a nivel de código por un sistema remoto, no un seguimiento de problemas "basado en humanos", como se hace con Jira, Trac, etc.
Preguntas
Estoy buscando ideas de desarrolladores que han usado este tipo de sistema, específicamente con respecto a:
- ¿Cuáles son las características esenciales que no podría prescindir?
- ¿De qué sirve tener funciones que realmente le ahorren tiempo?
- ¿Qué características pueden parecer una buena idea, pero en realidad no son tan útiles?
Por ejemplo, yo diría que una función "mostrar duplicados" que identifica la ocurrencia múltiple de un error (sin preocuparse por los detalles "sin importancia" que pueden diferir) es bastante esencial.
Un botón para "crear un problema en [Jira / etc] para este error" suena como un buen ahorro de tiempo.
Solo para repetir, lo que busco es experiencias prácticas de personas que han usado tales sistemas, preferiblemente respaldados por qué una característica es increíble / terrible.
(Si va a teorizar de todos modos, al menos marque su respuesta como tal).
fuente
Respuestas:
He estado en un proyecto donde con errores de cliente registrados usando la biblioteca de Microsoft Enterprise . Todas las excepciones se envían a nuestro buzón. En el asunto del correo agregamos un código hash de error serializado para evitar mensajes duplicados. Por supuesto, uno podría almacenar mensajes serializados en la base de datos, etc.
Le recomiendo que consulte la biblioteca de Microsoft Enterprise y Log4Net .
Algunas características de Log4Net
fuente
En el caso de las aplicaciones de bases de datos, algún tipo de ID (como
<TABLE>:<PrimaryKeyID>
) que le permite rastrear los registros en la base de datos relacionados con el alcance donde se detectó la excepción.Lo hice con Oracle y PL / SQL, registrando la ID en una tabla de base de datos dentro de la aplicación, desde el controlador de excepciones.
fuente
Gran parte de lo que usted describe (es decir, las partes específicas de registro) se implementan en la biblioteca empresarial, como Amir Rezaei ha señalado. Todo lo demás parece ser más de la parte analítica (es decir, qué hacer con los registros después).
En mi caso, creé algunas aplicaciones pequeñas y scripts sql que facilitaron algunas cosas. Estas son algunas de las cosas que realmente me gustaron:
fuente
A veces, la información de registro es demasiado voluminosa para ser almacenada en el disco. Un enfoque que he visto es escribir sus entradas de registro en un firehose (en, digamos, perl) algo como esto:
entonces un analista puede averiguar qué quiere mirar.
fuente
Aquí hay algunas cosas que aprendí del monitoreo de errores en nuestras aplicaciones:
He tenido excelentes resultados para log4net porque hace que sea muy fácil iniciar sesión en varios lugares y también facilita los cambios en la configuración de registro.
fuente
elmah es un sistema de registro de errores de código abierto para aplicaciones ASP.NET y se puede agregar a un sistema existente (usando NuGet http://nuget.codeplex.com/ ) de manera rápida y fácil. Es compatible con varios backends y funciones de notificación.
No conozco a nadie que lo haya agregado a una aplicación de escritorio, ya que se ejecuta como un sitio web, pero no hay nada que le impida ejecutarlo como un servicio y publicar sus excepciones a través de la web.
http://code.google.com/p/elmah/
fuente