Pregunta

He encontrado la manera de convertir los errores en las excepciones, y la veo muy bien si no son capturados, pero no sé cómo iniciar sesión en una forma útil.Sólo escribir a un archivo no será útil, no??Y se arriesga a acceder a una base de datos, cuando no se sabe qué causó la excepción todavía?

¿Fue útil?

Solución

Me gusta mucho log4php para el registro, aunque aún no han salido de la incubadora.Yo uso log4net en casi todo, y han encontrado que el estilo muy natural para mí.

Con respecto a los fallos del sistema, usted puede registrar el error a varios destinos (por ejemplo, tener appenders cuyo umbral CRÍTICO o ERROR que sólo entran en juego cuando las cosas van mal).No estoy seguro de cómo a prueba de fallos existentes appenders son--si la base de datos es hacia abajo, ¿cómo es que el appender no?--pero usted podría fácilmente escribir su propia appender que no se cumplen correctamente si no puede iniciar sesión.

Otros consejos

Usted podría utilizar set_error_handler para establecer una excepción personalizada de registro de sus errores.Me gustaría personalmente considere la posibilidad de almacenar en la base de datos como el valor predeterminado del controlador de Excepción de la traza, puede proporcionar información sobre lo que la hizo - por supuesto, esto no será posible si la base de datos de controlador activa la excepción, sin embargo.

Usted también podría usar error_log de registro de sus errores.Tiene una opción de mensaje de destinos, incluyendo:

Citado de error_log

  1. PHP sistema del registrador, utilizando el Sistema Operativo del sistema de mecanismo de registro o un archivo, dependiendo de lo que el error_log de configuración de la directiva se establece.Esta es la opción predeterminada.
  2. Enviado por correo electrónico a la dirección indicada en el parámetro de destino.Este es el único tipo de mensaje donde el cuarto parámetro, extra_headers se utiliza.
  3. Anexa al archivo de destino .Un salto de línea no se agrega automáticamente al final de la cadena de mensaje.

Editar:Hace rebajas tienen un noparse etiqueta pone de relieve?

Sólo escribir a un archivo no será útil, no??

Pero por supuesto que lo es - que es una gran cosa que hacer, mucho mejor que mostrando en la pantalla.Usted desea mostrar al usuario una agradable pantalla que dice: "lo Siento, hemos metido la pata.Los ingenieros han sido notificados.Volver y probar otra vez" y ABSOLUTAMENTE NINGÚN DETALLE TÉCNICO, porque hacerlo sería un riesgo de seguridad.Usted puede enviar un correo electrónico a un buzón de correo compartido y registro de la excepción del archivo o la base de datos para su posterior revisión.Esta sería una de las mejores prácticas.

Me gustaría escribir a un archivo - y tal vez establecer un sistema de monitoreo para la verificación de cambios en el tamaño o la última fecha de modificación.Webmin es una manera fácil, pero hay más completa de soluciones de software.

Si usted sabe que su único error, correo electrónico un aviso puede estar bien.Sin embargo, con un número de visitas por minuto sitio web, no nunca enviar por correo electrónico una notificación.He visto un sitio web derribado por tener cientos de correos electrónicos por minuto se genera para decir que el sistema no se pudo conectar a la base de datos.El hecho de que también había un LoadAvg de > 200 debido al servidor de correo para cada mensaje nuevo, no ayuda en absoluto.En esa instancia - el mejor escenario fue, por lejos, el perro guardián de cheques para filesizes y la conexión a un servicio externo para enviar un SMS (tal vez un IM), o tener un sistema externo buscar en una página web para un mensaje de error (que no tiene que ser visible en la pantalla - puede ser en un comentario HTML).

Creo que depende mucho del lugar donde ocurrió el error.Si la base de datos está abajo de registro a la base de datos no es buena idea ;)

Yo uso el syslog() función para registrar el error, pero no tengo problemas para escribir a un archivo cuando estoy en un sistema que no tiene syslog-apoyo.Usted puede configurar su sistema para el envío de un correo electrónico o un mensaje jabber usando, por ejemplo logwatch o el estándar de syslogd.

En la segunda log4php.Yo normalmente lo tienen configurado para enviar cosas como excepciones a ERROR o CRITITCAL y les han escrito a syslog.Desde allí, usted puede tener su syslog de alimentación en Zenoss, Nagios, Splunk o cualquier otra cosa que syslog puede hablar.

También se puede coger y grabar PHP excepciones usando Google Forms.Hay un tutorial aquí que explica el proceso.

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