Rotación de logs en FreeBSD
Como ya debemos saber, FreeBSD diferencia las aplicaciones de sistema, de las instaladas de terceros, con lo cual, servicios como por ejemplo named , no tienen su configuración en /etc directamente como pasa con GNU/Linux, si no que estos se trasladan a /usr/local/etc , lo cual desde la perspectiva Unix , tiene mucho más sentido. Pero no entraremos en esta discusión ahora.
Lo que nos interesa es poder rotar los logs , como pasa con por ejemplo los que genera maillog. Y para esto FreeBSD dispone de una utilidad llamada newsyslog. De la que podemos consultar el manual aquí.
Su configuración se encuentra en /etc/newsyslog.conf , ahora sí, esta si es una utilidad de sistema, y tiene una pinta tal que esta:
root@fbsdsrv01:~ # cat /etc/newsyslog.conf
# configuration file for newsyslog
# $FreeBSD$
#
# Entries which do not specify the '/pid_file' field will cause the
# syslogd process to be signalled when that log file is rotated. This
# action is only appropriate for log files which are written to by the
# syslogd process (ie, files listed in /etc/syslog.conf). If there
# is no process which needs to be signalled when a given log file is
# rotated, then the entry for that file should include the 'N' flag.
#
# Note: some sites will want to select more restrictive protections than the
# defaults. In particular, it may be desirable to switch many of the 644
# entries to 640 or 600. For example, some sites will consider the
# contents of maillog, messages, and lpd-errs to be confidential. In the
# future, these defaults may change to more conservative ones.
#
# logfilename [owner:group] mode count size when flags [/pid_file] [sig_num]
/var/log/all.log 600 7 * @T00 J
/var/log/auth.log 600 7 1000 @0101T JC
/var/log/console.log 600 5 1000 * J
/var/log/cron 600 3 1000 * JC
/var/log/daily.log 640 7 * @T00 JN
/var/log/debug.log 600 7 1000 * JC
/var/log/init.log 644 3 1000 * J
/var/log/kerberos.log 600 7 1000 * J
/var/log/maillog 640 7 * @T00 JC
/var/log/messages 644 5 1000 @0101T JC
/var/log/monthly.log 640 12 * $M1D0 JN
/var/log/devd.log 644 3 1000 * JC
/var/log/security 600 10 1000 * JC
/var/log/utx.log 644 3 * @01T05 B
/var/log/weekly.log 640 5 * $W6D0 JN
/var/log/daemon.log 644 5 1000 @0101T JC
<include> /etc/newsyslog.conf.d/[!.]*.conf
<include> /usr/local/etc/newsyslog.conf.d/[!.]*.conf
root@fbsdsrv01:~ #
Que podemos interpretar fácilmente. Quizás la columna más engorrosa sea la de when , pero un vistazo al manual nos lo aclara rápidamente. Ahora por ejemplo podríamos agregar una línea como:
/var/log/named.log bind:bind 644 7 * @T00 J /var/run/named/pid
Dentro de /usr/local/etc/newsyslog.conf.d/named.conf , esta vez sí en la ruta de aplicaciones “no base”, y en la que especificaremos que queremos que el servicio named , rote sus log diariamente, sin tener en cuenta su tamaño, y hasta un máximo de 7.
Recordemos reiniciar este daemon de newsyslog por si las moscas, aunque creo que no es estrictamente necesario.
root@fbsdsrv01:~ # service newsyslog restart
Creating and/or trimming log files.
root@fbsdsrv01:~ #