Este artículo explica cómo escribir un mensaje en el syslog desde línea de comandos o desde un script Bash en GNU/Linux.

El registro de mensajes es indispensable para auditar la actividad y estado de un sistema, al igual que para diagnosticar y resolver errores.

Los sistemas GNU/Linux incluyen el utilitario rsyslogd para soportar el registro (log) de mensajes del sistema. Esta herramienta es capaz de registrar mensajes locales y remotos a través de sockets Unix y UDP respectivamente.

Rsyslog es casi un estándar de los sistemas operativos de la familia Unix, pues es un desarrollo derivado del paquete sysklogd, que a su vez es derivado de los fuentes originales de BSD.

Rsyslogd provee una forma de registrar errores que muchos programas utilizan. Cada mensaje registrado contiene al menos una fecha, un nombre de host, y generalmente un nombre de programa. La configuración principal del demonio se encuentra en el archivo /etc/rsyslogd.conf. Dependiendo de la configuración en este archivo, los logs del sistema se almacenan en un conjunto de archivos dentro del directorio /var/log/ agrupados según el tipo de información que contienen (seguridad, autenticación, tareas programadas, correo, kernel, dispositivos, etc.). A su vez, los mensajes genéricos suelen ser almacenados en los archivos /var/log/syslog, /var/log/messages, o ambos. Por ejemplo, los sistemas OpenBSD utilizan una configuración que almacena mensajes genéricos en el archivo messages, mientras que Debian los almacena en el archivo syslog (y reserva el archivo messages para mensajes del kernel Linux y utilitarios del sistema).

Sin embargo este comportamiento cambia si el sistema utiliza systemd como gestor de inicio. Este ha reemplazado rsyslogd por el utilitario journald, el cual incluye la aberración de almacenar los logs del gestor de inicio en formato binario. Se trata de otro esfuerzo por reescribir y reemplazar (con el fin de monopolizar) otro componente de los sistemas Unix que lleva años en perfecto funcionamiento y desarrollo.

Volviendo al cauce del artículo, ya que estos archivos de log son manejados exclusivamente por el demonio rsyslogd (o en su defecto systemd-journald), uno no puede simplemente escribir contenido en ellos. Si por alguna razón se necesita registrar un mensaje desde consola o desde un script Bash, es necesario recurrir al utilitario logger. Este es provisto por el paquete util-linux y permite enviar mensajes a un demonio rsyslogd local o remoto.

Para registrar un mensaje con logger, simplemente se debe pasar como parámetro. Veamos un ejemplo en un sistema Debian 9 con rsyslogd:

root@debian9:~# logger "¡Hola mundo!"

Inmediatamente, la última línea que aparece en el archivo de log de mensajes genéricos es la siguiente:

root@debian9:~# tail -n1 /var/log/syslog
Sep 11 12:46:54 debian9 root: ¡Hola mundo!

Notar que, por defecto, el nombre de programa coincide con el nombre de usuario. Es posible cambiarlo gracias a la opción -t:

root@debian9:~# logger -t scriptcito "systemd apesta"
root@debian9:~# tail -n1 /var/log/syslog
Sep 11 13:58:48 debian9 scriptcito: systemd apesta

A su vez la opción -p permite especificar la prioridad del mensaje, conformada por el par "facilidad.nivel". La facilidad (facility) es una palabra clave que identifica al subsistema que ha generado el mensaje. Esta se utiliza como mecanismo de filtrado para seleccionar el archivo de log destino. El nivel define la severidad del mensaje. La prioridad por defecto que utiliza logger es "user.notice".

Referencias


Tal vez pueda interesarte


Compartí este artículo