Generación dinámica de archivo de log con rsyslog
Estimados, estoy tratando de hacer que rsyslog me escriba determinados
logs en distintos directorios según la fecha. El siguiente es un ejemplo
que funciona, pero no hace lo que quiero (osea, en este caso se guarda
todo en un mismo archivo en /var/log/rsyslog/rsyslog.log):
ruleset(name="remote"){
if $fromhost-ip == '192.168.0.5' then {
action(type="omfile" file="/var/log/rsyslog/syslog.log")
stop
}
Y lo que quiero en realidad es algo de este tipo:
ruleset(name="remote"){
if $fromhost-ip == '192.168.0.5' then {
action(type="omfile"
file="/var/log/rsyslog/año/mes/día/syslog.log")
stop
}
Pero no logro hacerlo andar. Intenté con las propiedades, pero no he
podido. Usando el formato de sintaxis viejo si he podido, pero no es
aconsejable usar dicha sintaxis. Lo que si funciona es lo siguiente:
template(name="CustomFormat_Hosts" type="string"
String="%$year%-%$month%-%$day% %$hour%:%$minute% %hostname% %syslogtag%
%msg%\n")
ruleset(name="remote"){
if $fromhost-ip == '192.168.0.5' then {
?CMTS;CustomFormat_Hosts
stop
}
En este caso como ven uso las propiedades pero en el string generado con
el template. Luego en la regla configuro que todos los mensajes de log
que vengan del host 192.168.0.5 sean guardados en una estructura como la
que yo deseo.
Se pueden preguntar lo siguiente: Si ya lograste hacer lo que querías
por qué estás preguntando como hacerlo??? Bueno, es que sinceramente hoy
en día no sé si lo que he hecho (?CMTS;CustomFormat_Hosts) es la forma
"correcta" de hacerlo. En la documentación de rsyslog se ven muuuuuchos
ejemplos usando la sentencia "action", pero no he encontrado ninguno que
en el campo "file" use las propiedades para generar dinámicamente los
directorios o los archivos. Lo de usar ?CMTS;CustomFormat_Hosts lo saqué
de un ejemplo escrito con la sintaxis vieja y por eso no sé si esa línea
en particular está formalmente bien (eso si, funciona perfecto).
El tema es que la misma documentación oficial de rsyslog mezcla sintaxis
nueva con vieja! Incluso su creador da ejemplos usando la sintaxis
vieja!!! Una cosa de locos, sobre todo pensando que en la misma página
te dicen que la sintaxis vieja por ahora es compatible, pero que en un
tiempo va a dejar de serlo y por eso conviene escribir todo según la
sintaxis vieja.
Me parece que esto no es algo inherentemente malo, sino que se debe a la
gran velocidad de desarrollo de rsyslog. Supongo que mucha documentación
no estará actualizada del todo.
En fin, a lo mejor alguno de ustedes me pueda dar una mano.
Saludos y muchas gracias.
Mauro.
Reply to: