Puesto que un daemon se desvincula del fichero STDERR
, los mensajes de warning y de error
no tienen donde ir a menos que el daemon los vuelque en un fichero de log.
Parece que la palabra 'log' viene de 'grabar en un logbook', que era un dispositivo para medir la velocidad de un barco. La idea de log - en informática - se refiere al registro coordinado de eventos que proporcionan un rastro que pueda ser examinado para diagnosticar la existencia de problemas y su causa. En vez de que cada demonio tenga su propio sistema de log, los sistemas operativos suelen proveer un servicio de log que permite el filtrado y grabado de mensajes de log.
Hay múltiples cuestiones que contestar respecto a como diseñar el logging: ¿Donde escribir nuestro fichero de log? ¿Cómo sincronizar los mensajes de log de los diferentes procesos hijos de un servidor que se ramifica usando fork?
Unix dispone de un sistema de logging conocido como syslog (véase la entrada para syslog
en la
wikipedia syslog). En Linux el login del núcleo del S.O. corre a cargo de klogd (véase
man klogd)
el cual puede ser usado en modo standalone o como cliente de syslogd. Syslog se ejecuta como un daemon
cuya configuración se controla habitualmente mediante el fichero /etc/syslog.conf
.
Los mensajes se escriben en ficheros en directorios como /var/log
y posiblemente
sean replicados a una consola.
Syslog ( syslogd ) también permite que los mensajes sean encaminados hacia otro nodo.
Sigue un ejemplo del fichero de log /var/log/messages
:
nereida:~# tail /var/log/messages May 13 09:31:09 mymachine gconfd (root-25216): Se resolvió la dirección «xml:readonly:/var/lib/gconf/debian.defaults» a una fuente de configuración de sólo lectura en la posición 3 May 13 09:31:09 mymachine gconfd (root-25216): Se resolvió la dirección «xml:readonly:/var/lib/gconf/defaults» a una fuente de configuración de sólo lectura en la posición 4 May 13 09:31:09 mymachine gconfd (root-25216): El servidor GConf no está en uso, cerrándolo. May 13 09:31:09 mymachine gconfd (root-25216): Finalizando May 13 10:00:45 mymachine -- MARK -- May 13 10:20:46 mymachine -- MARK -- May 13 10:34:48 mymachine kernel:\ Shorewall:net2fw:DROP:IN=eth1\ OUT= MAC=00:0c:6e:35:a2:ff:0f:1b:3f:d6:a8:0f:08:00 SRC=207.44.170.53\ DST=180.130.145.92 LEN=48 TOS=0x00 PREC=0x00 TTL=112 ID=23898\ DF PROTO=TCP SPT=4408 DPT=53 WINDOW=65535 RES=0x00 SYN URGP=0\ May 13 10:34:51 mymachine kernel: Shorewall:net2fw:DROP:IN=eth1\ OUT= MAC=00:0c:6e:35:a2:ff:00:1b:3f:d6:a8:0f:08:00 SRC=207.44.170.53\ DST=180.130.145.92 LEN=48 TOS=0x00 PREC=0x00 TTL=112 ID=24432 DF PROTO=TCP\ SPT=4408 DPT=53 WINDOW=65535 RES=0x00 SYN URGP=0 May 13 11:00:46 mymachine -- MARK -- May 13 11:19:21 mymachine exiting on signal 15Las líneas han sido partidas para aumentar la legibilidad. Quizá este no es un buen ejemplo para entender la estructura de un fichero
log
.
Cada mensaje en un fichero log
consiste en:
nereida:~# tail -n 5 -f /var/log/auth.log May 13 11:10:01 mymachine CRON[31443]: (pam_unix) session closed for user root May 13 11:15:01 mymachine CRON[31458]: (pam_unix) session opened for user root by (uid=0) May 13 11:15:01 mymachine CRON[31458]: (pam_unix) session closed for user root May 13 11:17:01 mymachine CRON[31461]: (pam_unix) session opened for user root by (uid=0) May 13 11:17:01 mymachine CRON[31461]: (pam_unix) session closed for user root
La opción -f
de tail
hace que conforme el fichero
/var/log/auth.log
crece las nuevas líneas se añadan a la salida
Casiano Rodríguez León