GNU/Linux >> Linux Esercitazione >  >> Linux

Modifica del formato della data in syslog

Ci sono sempre nuove opzioni per il problema della data, aggiungendo solo un paio di righe.
La mia soluzione arriva aggiungendo un file a /etc/rsyslog.d/ , ad esempio myrsyslog.conf , quindi aggiungi il formato che preferisci, il mio è:

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

questo applicherà il nuovo formato ai tuoi log rendendone facile l'analisi.

prima

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 ...

dopo

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...

Anche se hai trovato una soluzione diversa, do una risposta per gli altri.

Modifica il tuo file di configurazione syslog (su Debian per esempio:/etc/syslog-ng/syslog-ng.conf ).

Quindi dichiara un nuovo modello come questo :

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

Questo è un esempio, ma puoi utilizzare macro diverse in base alla documentazione di syslog collegata nella risposta di user9645.

Successivamente, trova in questo file di configurazione tutti i file di cui desideri modificare il formato di output e applica loro questo modello.

Ad esempio, voglio cambiare /var/log/auth.log formato di output, quindi cambio :

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

a :

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

Quindi riavviare syslog (service syslog-ng restart ) e prova un login per vedere le modifiche nel tuo auth.log .


Ho riscontrato lo stesso problema utilizzando FreeBSD 9.2 e Zabbix GUI del monitor di sistema che non è in grado di gestire cose come 'Jan' o 'Feb' nel timbro della data (!) sui messaggi di log di sistema.

Quello che ho fatto è stato installare il sysutils/syslog-ng port e usa convert-syslogconf.awk script per migrare il mio /etc/syslog.conf a /usr/local/etc/syslog-ng.conf (che per fortuna sembrava funzionare bene anche con una configurazione abbastanza complessa) e ha aggiunto questo modello di formattazione personalizzato a tutti i file() destinazioni:

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

Puoi trovare (molte) più informazioni sulla formattazione nella sezione 11.1 del manuale di syslog-ng . Sta funzionando bene per me (finora) spero che ti aiuti!


Linux
  1. Sostituzione del processo e tubo?

  2. Come creare uno script Bash per modificare il formato di una data in un file CSV?

  3. Cookie:un generatore di file basato su modelli per i progetti

  4. Modifica del contenuto di un file tramite script di shell

  5. Ottieni la data dell'ultima modifica del file in Linux

Come formattare le partizioni del disco in Linux

Come utilizzare il modello Jinja2 in Ansible Playbook

Modificare i permessi dei file nel cPanel

Riavvio di cron dopo aver modificato il file crontab?

Formato archivio indicizzato?

Modifica degli attributi Data di creazione e Ultima modifica di un file con quelli di un altro file