Pregunta

Estoy buscando la mejor manera de registrar errores en una aplicación ASP.NET.Quiero poder recibir correos electrónicos cuando ocurran errores en mi solicitud, con información detallada sobre la Excepción y la Solicitud actual.

En mi empresa solíamos tener nuestro propio ErrorMailer, detectando todo en Global.asax Application_Error.Estaba "bien", pero no era muy flexible ni configurable.

Recientemente cambiamos a NLog.Es mucho más configurable, podemos definir diferentes objetivos para los errores, filtrarlos y almacenarlos en buffer (aún no lo he probado).Es una muy buena mejora.

Pero últimamente descubrí que hay un espacio de nombres completo en el marco .Net para este propósito: Gestión.del.sistema.web y se puede configurar en el vigilancia de la salud sección de web.config.

¿Ha trabajado alguna vez con el monitoreo de salud de .Net?¿Cuál es su solución para el registro de errores?

¿Fue útil?

Solución

yo suelo elma.Tiene algunas características realmente interesantes y aquí hay una Proyecto de código artículo al respecto.¡Creo que el equipo de StackOverflow también usa elmah!

Otros consejos

he estado usando log4net, configurado para enviar por correo electrónico detalles de errores fatales.También está configurado para registrar todo en un archivo de registro, lo cual es invaluable cuando se intenta depurar problemas.El otro beneficio es que si esa funcionalidad estándar no hace lo que usted desea, es bastante fácil escribir un agregado personalizado que pueda procesar la información de registro según sea necesario.

Dicho esto, estoy usando esto en conjunto con un controlador de errores personalizado que envía un correo electrónico html con un poco más de información que la que se incluye en los correos electrónicos estándar de log4net: página, variables de sesión, cookies, variables del servidor http, etc.

Ambos están conectados en el evento Application_OnError, donde la excepción se registra como una excepción fatal en log4net (lo que luego hace que se envíe por correo electrónico a una dirección de correo electrónico específica), y también se manejan mediante el controlador de errores personalizado.

Escuché por primera vez sobre elma de la entrada del blog Coding Horror, Choque responsablemente, y aunque parece prometedor, todavía tengo que implementar algún proyecto.

He estado usando los objetos de registro de la biblioteca empresarial.Le permite tener diferentes tipos de registro (archivo plano, correo electrónico y/o base de datos).Es bastante personalizable y tiene una interfaz bastante buena para actualizar su web.config para la configuración del registro.Por lo general, llamo a mi registro desde On Error en Global.asax.

Aquí hay un enlace al MSDN.

Yo uso log4net y dondequiera que esté esperar una excepción la registro en el nivel apropiado.Tiendo a no volver a lanzar la excepción porque realmente no permite una experiencia de usuario tan agradable, hay menos información que puedes proporcionar en el estado actual.

También configuraré Application_Error para detectar cualquier excepción que no se esperaba y el error se registra como una prioridad fatal a través de log4net (bueno, los 404 se detectan y se registran como información ya que no son de tanta gravedad).

mi equipo usa log4net de apache.Es bastante liviano y fácil de configurar.Lo mejor de todo es que es completamente configurable desde el archivo web.config, por lo que una vez que tenga los ganchos en la configuración de su código, puede cambiar completamente la forma en que se realiza el registro simplemente cambiando el archivo web.config.

log4net admite el registro en una amplia variedad de ubicaciones: base de datos, correo electrónico, archivo de texto, registro de eventos de Windows, etc.Mi equipo lo tiene configurado para enviar información detallada del error a una base de datos y también enviar un correo electrónico a todo el equipo con información suficiente para que podamos determinar en qué parte del código se originó el error.Entonces sabemos quién es responsable de ese fragmento de código y pueden ir a la base de datos para obtener información más detallada.

Recientemente construí un servicio web asp.net con NLog, que uso para todas mis aplicaciones de escritorio.El registro funciona bien cuando estoy depurando en Visual Studio, pero tan pronto como cambio a IIS, el archivo de registro no se crea;Todavía no he determinado por qué, pero el hecho de que necesito buscar una solución me hace querer probar algo más para mis necesidades de asp.net.

Usamos EnterpriseLibrary.ExceptionHandling.Logging.Me gusta un poco más que log4net porque no solo controlamos el registro por completo, sino que también podemos controlar la decisión Throw/NoThrow dentro de la configuración.

Usamos una utilidad de registro personalizada que escribimos.Requiere que usted implemente el registro por su cuenta en todos los lugares donde lo necesite.Pero también le permite capturar mucho más que la excepción.

Por ejemplo nuestro código se vería así:

Try
  Dim p as New Person()
  p.Name = "Joe"
  p.Age = 30
Catch ex as Exception
  Log.LogException(ex,"Err creating person and assigning name/age")
  Throw ex
End Try

De esta manera nuestro registrador escribirá toda la información que necesitamos en una base de datos SQL.Tenemos alertas de correo electrónico configuradas a nivel de base de datos para buscar ciertos errores o errores que ocurren con frecuencia.Nos ayuda a identificar exactamente de dónde vienen los errores.

Puede que esto no sea exactamente lo que estás buscando.Otro enfoque similar al uso de Global.asax es para nosotros una técnica de inyección de código como POA con PostSharp.Esto le permite inyectar código personalizado al principio y al final de cada método o en cada excepción.Es un enfoque interesante, pero creo que puede tener una gran sobrecarga de rendimiento.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top