El comando logger: escribir en el syslog

Introducción

logger es una herramienta de línea de comandos que permite escribir mensajes directamente en el syslog (y por tanto en /var/log/syslog, journalctl, etc.). Es muy útil en scripts de mantenimiento para dejar trazas auditables, en pruebas de reglas de rsyslog, y para integrar herramientas propias con el sistema de logs del sistema.

Uso básico


# Mensaje simple (facility: user, prioridad: notice por defecto)
logger "Inicio del script de backup"

# Ver el mensaje recién enviado
journalctl -n 5

# También aparece en syslog
tail -5 /var/log/syslog
          

Opciones principales


# Especificar facility y prioridad (-p facility.priority)
logger -p local0.info "Aplicación iniciada correctamente"
logger -p auth.warning "Intento de acceso sin credenciales"
logger -p kern.err "Error crítico simulado"

# Añadir una etiqueta al mensaje (-t tag)
logger -t mi-script "Copia de seguridad completada"

# Leer el mensaje desde stdin (útil en pipelines)
echo "resultado del proceso" | logger -t proceso

# Especificar facility, prioridad y etiqueta a la vez
logger -p local0.notice -t backup "Backup diario finalizado sin errores"

# Enviar a un syslog remoto (-n host -P puerto)
logger -n 192.168.1.10 -P 514 -p local0.info "Mensaje remoto"
          

Uso en scripts de bash

Un patrón habitual es definir una función de log al inicio del script para que todos los mensajes queden registrados tanto en el terminal como en el syslog:


#!/bin/bash

SCRIPT="mi-backup"

log() {
    local nivel=$1
    shift
    logger -t "$SCRIPT" -p "local0.$nivel" "$*"
    echo "[$nivel] $*"
}

log info  "Iniciando backup de /home"
tar -czf /backup/home-$(date +%F).tar.gz /home && \
    log info "Backup completado" || \
    log err  "Error al crear el backup"
          

Con esto los mensajes quedan registrados en /var/log/syslog (o el destino configurado para local0 en rsyslog) y son consultables con journalctl -t mi-backup.

Probar reglas de rsyslog con logger

logger es la forma más directa de verificar que una regla en /etc/rsyslog.conf funciona como esperas:


# 1. Añadir la regla en /etc/rsyslog.d/test.conf:
#    local7.debug   /var/log/mi-test.log

# 2. Reiniciar rsyslog
systemctl restart rsyslog

# 3. Enviar un mensaje de prueba
logger -p local7.debug -t test "mensaje de prueba"

# 4. Comprobar que llegó
tail /var/log/mi-test.log
          

Para el examen LPIC-1 (objetivo 108.2): saber que logger permite generar entradas de syslog desde la línea de comandos, especificando facility y prioridad con -p y etiqueta con -t.

Entorno de shell: variables de entorno, PATH, .bashrc, .bash_profile, aliases

Índice de la sección

Índice del curso