GNU/Linux >> Tutoriales Linux >  >> Linux

Cambio de formato de fecha en syslog

Siempre hay nuevas opciones para el problema de la fecha, agregando solo un par de líneas.
Mi solución viene agregando un archivo a /etc/rsyslog.d/ , por ejemplo myrsyslog.conf , luego agregue el formato de su elección, el mío es:

$template myformat,"%TIMESTAMP:1:10:date-rfc3339% %TIMESTAMP:19:12:date-rfc3339% %syslogtag%%msg%\n"
$ActionFileDefaultTemplate myformat

esto aplicará el nuevo formato a sus registros, lo que facilitará su análisis.

antes

Sep  3 12:52:37 whs dhcpcd[477]: wlan0: expired address ...
Sep  3 12:52:37 whs dhcpcd[477]: wlan0: part of Router Advertisement expired
Sep  3 12:52:37 whs dhcpcd[477]: wlan0: deleting route to ...

después

2020-09-03 13:00:49 systemd[1]: rsyslog.service: Succeeded. 
2020-09-03 13:00:49 systemd[1]: Stopped System Logging Service. 
2020-09-03 13:00:49 systemd[1]: Starting System Logging Service...

Incluso si encontró una solución diferente, doy una respuesta para los demás.

Edite su archivo de configuración de syslog (en Debian, por ejemplo:/etc/syslog-ng/syslog-ng.conf ).

Luego declare una nueva plantilla como esta:

template template_date_format {
    template("${YEAR}-${MONTH}-${DAY} ${HOUR}:${MIN}:${SEC} ${HOST} ${MSGHDR}${MSG}\n");
    template_escape(no);
};

Este es un ejemplo, pero puede usar diferentes macros de acuerdo con la documentación de syslog vinculada en la respuesta del usuario 9645.

Después de eso, busque en este archivo de configuración, todos los archivos a los que desea cambiar el formato de salida y aplíqueles esta plantilla.

Por ejemplo, quiero cambiar /var/log/auth.log formato de salida, luego cambio:

destination d_auth { file("/var/log/auth.log"); };

a :

destination d_auth { file("/var/log/auth.log" template(template_date_format)); };

Luego reinicie syslog (service syslog-ng restart ) e intente iniciar sesión para ver los cambios en su auth.log .


Tuve el mismo problema con FreeBSD 9.2 y Zabbix GUI del monitor del sistema que no puede manejar cosas como 'Jan' o 'Feb' en la marca de fecha (!) en los mensajes de registro del sistema.

Lo que hice fue instalar el sysutils/syslog-ng y use el convert-syslogconf.awk script para migrar mi /etc/syslog.conf a /usr/local/etc/syslog-ng.conf (que afortunadamente parecía funcionar bien incluso con una configuración bastante compleja) y agregó esta plantilla de formato personalizado a todos los file() destinos:

template t_msgfmt {
    template("${ISODATE} ${HOST} ${FACILITY} ${LEVEL} ${MSGHDR}${MSG}\n");
    template_escape(no);
};

Puede encontrar (mucha) más información de formato en la sección 11.1 del manual de syslog-ng . Me está funcionando bien (hasta ahora), ¡espero que te ayude!


Linux
  1. Linux:¿cómo encontrar la fecha de creación del archivo?

  2. ¿Cómo configurar la fecha con el formato de época?

  3. Cookie:un generador de archivos basado en plantillas para proyectos

  4. ¿Reiniciando cron después de cambiar el archivo crontab?

  5. Cambiar el contenido de un archivo a través de un script de shell

Cómo formatear particiones de disco en Linux

Cómo usar la plantilla Jinja2 en Ansible Playbook

¿Sustitución de proceso y tubería?

¿Cómo hacer un script Bash para cambiar el formato de una fecha en un archivo CSV?

Cambiar permisos de archivo en cPanel

formato de archivo de contraseña ldapsearch