¿Iniciando sesión en un archivo de texto o base de datos?

25

¿Cuándo debo usar la base de datos para iniciar sesión y cuándo los archivos de texto?
Veo que los servidores web y los marcos web (que su aplicación usa internamente) generalmente (¿siempre?) Registran solicitudes y errores en archivos de texto de forma predeterminada. Pero veo que las personas que desarrollan su aplicación en torno a esos servidores y marcos a veces inician sesión en la base de datos (incluso la base de datos principal de la aplicación, no alguna externa).
También tal vez haya una diferencia entre los registros de depuración y los registros de auditoría . He leído esta clasificación en alguna parte de este sitio.

Nakilon
fuente
Esto también puede ayudar stackoverflow.com/questions/3458813/…
Muhammad Raja
2
¿Posible duplicado de Log to file o to database database?
mosquito
Si bien no debería estar registrando información confidencial, algunos sistemas pueden requerirla, y este es un buen caso para iniciar sesión en la base de datos. A veces, los desarrolladores registran inadvertidamente información confidencial. Para protegerse contra este accidente, muchos desarrolladores de aplicaciones solo iniciarán sesión en una base de datos, por lo que cosas como los números de seguridad social en los mensajes de registro no se encuentran en un archivo de texto en texto plano en 13 servidores diferentes.
Greg Burghardt

Respuestas:

16

En términos muy generales, iniciar sesión en un archivo de texto es mucho más rápido que iniciar sesión en una base de datos. Ese es el aspecto principal del registro que debe tener en cuenta.

La razón por la que inicia sesión en una base de datos es más probable porque desea consultar los resultados: la búsqueda de información de registro particular es más fácil en una base de datos, especialmente si registra información contextual que puede usarse para agrupar entradas de registro. Por lo general, también es más fácil acceder a una base de datos central que a un archivo de registro en un servidor que puede estar protegido y no accesible.

Lo ideal sería iniciar sesión localmente en un archivo y luego migrar estos datos a una base de datos para su inspección si fuera necesario.

Ahora la auditoría es una bestia completamente diferente. Si bien es similar en concepto al registro, la auditoría generalmente se debe mantener durante mucho tiempo (a diferencia de los archivos de registro utilizados para la depuración o el seguimiento que se pueden eliminar a su antojo). Las auditorías están ahí para mostrar información importante. Registra mucha menos información de auditoría y con menos frecuencia que el registro normal, por lo que el rendimiento no es una preocupación. Es por esta razón que se ven las ventajas de escribir esta información de auditoría en una base de datos central.

gbjbaanb
fuente
1
Otra disposición que he visto es que los registros se escriban localmente inicialmente y luego se envíen a la base de datos mediante algún tipo de trabajo en segundo plano.
Robbie Dee
@RobbieDee Me gusta esta idea. Tengo un tipo de pregunta duplicada: ¿es común tener archivos de registro de duración limitada (por ejemplo, los últimos 30 días) pero como los registros se insertan en la base de datos (por ejemplo, semanalmente), todos los registros se almacenan en la base de datos => los archivos de registro actúan como un búfer solo y todas las operaciones de lectura se realizan en la base de datos? Como la escritura en DB se retrasa, no hay que preocuparse por el rendimiento, ¿no es así?
Al-un
9

No existe un enfoque único para todos y, para la resistencia, a veces desea utilizar múltiples enfoques. Tomando su ejemplo, es posible que desee guardar registros de depuración en un archivo y almacenar registros de auditoría en una base de datos.

Aplicación de migas de pan

Pros: fácil de implementar y visible para el usuario de inmediato

Contras: la información solo persiste mientras la aplicación está activa

Archivo de texto

Pros: fácil de implementar

Contras: es necesario asegurarse de que no se bloquee el archivo. ¿Qué hacer cuando se agota el espacio en disco en la unidad de registro?

Registro de eventos

Pros: fácil de implementar

Contras: el registro de eventos puede llenarse si no se configura correctamente o se pueden perder los registros antiguos debido a la política de retención / limpieza.

Base de datos

Pros: fácil de implementar

Contras: Más tráfico de DB. ¿Cómo registrar una pérdida de DB u otro problema de DB?

Mensajería (MQ)

Pros: dispara y olvida

Contras: otra capa para salir mal. Requiere configuración

Robbie Dee
fuente
También es posible que desee incluir el demonio syslog y los destinos de registro SNMP.
gbjbaanb
@gbjbaanb Bueno, de hecho, algunos sistemas operativos tienen dicha funcionalidad incorporada, esta ciertamente no es una lista exhaustiva. Los sistemas de alta disponibilidad también pueden enviar SMS cuando se caen.
Robbie Dee
2

Los registros de auditoría deben garantizar la trazabilidad completa de las operaciones durante más tiempo para fines de auditoría, con el objetivo de justificar completamente el contenido de su base de datos.

En algunos casos (por ejemplo, aplicaciones financieras), estos registros pueden tener que garantizar el cumplimiento de los requisitos legales, como la retención (en algunos países durante 10 años) o la inalterabilidad. Como estos registros tienen que justificar el contenido de la base de datos a nivel de aplicación, es una práctica común almacenarlos en la base de datos, donde se puede controlar el acceso para evitar alteraciones no autorizadas.

Otros registros , como los registros de supervisión o los registros de seguridad, con frecuencia tienen que hacer frente a las limitaciones de volumen y rendimiento. Por lo general, se escriben en un archivo porque es más rápido de escribir (sin gastos generales de administración de transacciones), más fácil de archivar sin conexión y más fácil de integrar con herramientas SIEM de monitoreo externo .

Debe tenerse en cuenta que, si bien este tipo de registros se pueden usar para demostrar la confiabilidad de los registros de auditoría (por ejemplo, sin acceso no autorizado), generalmente tienen restricciones de retención más cortas (por ejemplo, entre 6 meses y 2 años para fines de cumplimiento de la ley para registros de telecomunicaciones) si alguna restricción en absoluto.

Christophe
fuente
1

Una de las muchas razones para usar db para el registro de depuración es cuando no tiene acceso a la aplicación o al servidor web para ver el visor de eventos o los archivos de texto

Los registros de auditoría son diferentes que los registros de depuración en el contexto de la aplicación web, ya que en algunas aplicaciones es posible que deba mostrarlos al usuario final para que puedan ingresar a la base de datos para una recuperación fácil.

También puede usar DB Tools para filtrar y ver fácilmente.

Muhammad Raja
fuente
Escribir en los archivos de registro del servidor no es la única opción para los sistemas de alta concurrencia. Estos registros a menudo se escriben en el dispositivo del cliente y luego se envían a soporte en caso de problemas. La alta concurrencia también puede hacer que esto no sea adecuado para escribir en una sola base de datos.
Robbie Dee
@RobbieDee ¿Es ese el caso de los servidores web y las aplicaciones web también? como eso es lo que OP está pidiendo, creo
Muhammad Raja