9.5.1. Principio y mecanismo
Starting with Debian Bookworm, the rsyslog package is no longer installed by default, which in the past provided the default logging functionality. Instead, the log is provided by systemd
's journal, which can be accessed by the journalctl(5) command.
There are situations, where it is necessary or desired to install rsyslog, though, e.g. to send all log messages to a central server. After installation, the rsyslogd
daemon is responsible for collecting service messages coming from applications and the kernel, then dispatching them into log files (usually stored in the /var/log/
directory). It obeys the /etc/rsyslog.conf
configuration file.
Cada mensaje de registro es asociado con un subsistema de aplicaciones (llamados «facility» en la documentación):
auth
y authpriv
: para autenticación;
cron
: proviene servicios de programación de tareas, cron
y atd
;
daemon
: afecta un demonio sin clasificación especial (DNS, NTP, etc.);
ftp
: el servidor FTP;
kern
: mensaje que proviene del núcleo;
lpr
: proviene del subsistema de impresión;
mail
: proviene del subsistema de correo electrónico;
news
: mensaje del subsistema Usenet (especialmente de un servidor NNTP — protocolo de transferencia de noticias en red, «Network News Transfer Protocol» — que administra grupos de noticias);
syslog
: mensajes del servidor syslogd
en sí;
user
: mensajes de usuario (genéricos);
uucp
: mensajes del servidor UUCP (programa de copia Unix a Unix, «Unix to Unix Copy Program», un protocolo antiguo utilizado notablemente para distribuir correo electrónico);
local0
a local7
: reservados para uso local.
Cada mensaje tiene asociado también un nivel de prioridad. Aquí está la lista en orden decreciente:
emerg
: «¡Ayuda!» Hay una emergencia y el sistema probablemente está inutilizado.
alerta
: apúrese, cualquier demora puede ser peligrosa, debe reaccionar inmediatamente;
crit
: las condiciones son críticas;
err
: error;
warn
: advertencia (error potencial);
notice
: las condiciones son normales pero el mensaje es importante;
info
: mensaje informativo;
debug
: mensaje de depuración.
9.5.2. El archivo de configuración
The syntax of the /etc/rsyslog.conf
file is detailed in the rsyslog.conf(5) manual page, but there is also HTML documentation available in the rsyslog-doc package (/usr/share/doc/rsyslog-doc/html/index.html
). The overall principle is to write “selector” and “action” pairs. The selector defines all relevant messages, and the action describes how to deal with them.
9.5.2.1. Sintaxis del selector
El selector es una lista separada por punto y coma de pares subsistema.prioridad
(por ejemplo: auth.notice;mail.info
). Un asterisco puede representar todos los subsistemas o todas las prioridades (por ejemplo: *.alert
o mail.*
). Puede agrupar varios subsistemas separándolos con una coma (por ejemplo: auth,mail.info
). La prioridad indicada también incluye los mensajes de prioridad igual o mayor; por lo tanto, auth.alert
indica los mensajes del subsistema auth
de prioridad alert
o emerg
. Si se agrega un signo de exclamación (!) como prefijo, indica lo contrario; en otras palabras, prioridades estrictamente menores. Por lo tanto, auth.!notice
sólo incluye los mensajes del subsistema auth
con prioridades info
o debug
. Si se agrega un signo igual (=) como prefijo corresponde única y exactamente con la prioridad indicada (auth.=notice
sólo incluye los mensajes del subsistema auth
con prioridad notice
).
Cada elemento en la lista del selector reemplaza elementos anteriores. Así es posible restringir un conjunto o excluir ciertos elementos del mismo. Por ejemplo, kern.info;kern.!err
significa los mensajes del núcleo con prioridades entre info
y warn
. La prioridad none
indica el conjunto vacío (ninguna prioridad) y puede servir para excluir un subsistema de un conjunto de mensajes. Por lo tanto *.crit;kern.none
indica todos los mensajes con prioridad igual o mayor a crit
que no provengan del núcleo.
9.5.2.2. Sintaxis de las acciones
Las acciones posibles son:
agregar el mensaje a un archivo (ejemplo: /var/log/messages
);
enviar el mensaje a un servidor syslog
remoto (ejemplo: @log.falcot.com
);
enviar el mensaje a una tubería con nombre existente (ejemplo: |/dev/xconsole
);
enviar el mensaje a uno o más usuarios si tienen una sesión iniciada (ejemplo: root,rhertzog
);
enviar el mensaje a todos los usuarios con sesiones activas (ejemplo: *
);
escribir el mensaje en una consola de texto (ejemplo: /dev/tty8
).