Me pregunto por qué hay tantos archivos de registro en un sistema Linux típico. ¿No sería una mejor idea tener una función de API del sistema para el registro y una tabla consolidada para guardar todas las entradas de registro de todas las aplicaciones?
8
.log
y.conf
como identificadores?Respuestas:
Es parte de la filosofía de Unix . La idea es que los archivos de texto estén libres del bloqueo del programa y todos puedan usar la técnica que prefieran. Para llevar esto más lejos, a menudo se usan archivos planos, a diferencia de los lenguajes de marcado como XML (aunque también he visto programas que almacenan cosas en formato XML).
Al buscar en Google, he encontrado esta agradable reseña sobre texto sin formato, con comentarios sobre la filosofía de Unix.
fuente
El uso de archivos de texto simples tiene la ventaja de que no necesita herramientas específicas de la base de datos para obtener sus entradas de registro.
Puede analizarlos con grep si lo desea, puede abrirlos con su buscapersonas favorito y puede procesarlos en su lenguaje de secuencias de comandos favorito como Perl, Python, etc. sin la necesidad de bibliotecas adicionales.
En un sistema Unix ya tienes algún tipo de "API de registro del sistema". Se llama syslog. Syslog no es realmente una API, pero es un estándar para registrar mensajes. El nombre significa el protocolo de red y la biblioteca y el demonio detrás de él.
La configuración predeterminada de la mayoría de los sistemas es un demonio syslog que escucha mensajes locales.
El demonio acepta los mensajes y realiza el registro. Hay varias implementaciones diferentes de syslog daemons para todo tipo de plataformas y también es posible registrar sus mensajes en una base de datos.
Es tu decision.
fuente
Los diferentes archivos de registro contienen información diferente (aunque generalmente hay alguna duplicación). A menudo tienen diferentes características: diferentes políticas de rotación y retención, diferentes permisos, etc. El demonio syslog se encarga de escribirlas; puede ver su configuración en
/etc/syslog.conf
o/etc/syslog-ng.conf
.Esta es una buena idea. Llamémoslo syslog . Su trabajo es enviar las entradas de registro al demonio syslog.
Ahora que es una lata entera de gusanos. Parece estar asumiendo la presencia de un motor de base de datos, probablemente una base de datos relacional, probablemente una que puede consultar en SQL. Pero Unix es más antiguo que SQL, y hay muy buenas razones por las que no ha adoptado SQL como componente estándar. Bajo Unix, la base de datos es el sistema de archivos. No es una base de datos relacional, es simple . Sus entradas no son filas, sino archivos simples , preferiblemente texto, preferiblemente con un formato simple. Por ejemplo, los archivos de registro son archivos de texto, con una entrada por línea, que contienen la fecha, el nombre de la máquina, el programa de origen y el texto de entrada. Usar una base de datos relacional tendría varias desventajas:
cat
,grep
,less
contra las consultas SQL. Y los permisos de archivo contra, bueno, no sé cómo manejaría esto en una base de datos relacional típica.fuente
Si realmente desea almacenar los registros de su sistema en una base de datos relacional (que puede tener muchas ventajas), consulte rsyslog ( El sustituto futuro de syslog ), que puede escribir registros del sistema en una base de datos MySQL , Postgres u Oracle .
fuente
Esto haría que cosas como 'tail -f /var/log/apache/access.log' sean imposibles.
¿Por qué crees que sería mejor poner todo en un archivo?
fuente
grep '\[apache\]' | tail -f /dev/stdin
- pero tener un servidor de inicio de sesión por usuario (cuando el usuario no tiene acceso al registro de otro usuario).