GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Ändern des Datumsformats im Syslog

Es gibt immer neue Optionen für das Datumsproblem, indem nur ein paar Zeilen hinzugefügt werden.
Meine Lösung besteht darin, eine Datei zu /etc/rsyslog.d/ hinzuzufügen , zum Beispiel myrsyslog.conf , dann fügen Sie das Format Ihrer Wahl hinzu, meins ist:

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

Dadurch wird das neue Format auf Ihre Protokolle angewendet, was das Parsen erleichtert.

vorher

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

nach

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

Auch wenn Sie eine andere Lösung gefunden haben, gebe ich eine Antwort für andere.

Bearbeiten Sie Ihre Syslog-Konfigurationsdatei (unter Debian zum Beispiel:/etc/syslog-ng/syslog-ng.conf ).

Deklarieren Sie dann eine neue Vorlage wie folgt:

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

Dies ist ein Beispiel, aber Sie können verschiedene Makros gemäß der Syslog-Dokumentation verwenden, die in der Antwort von user9645 verlinkt ist.

Suchen Sie danach in dieser Konfigurationsdatei alle Dateien, für die Sie das Ausgabeformat ändern möchten, und wenden Sie diese Vorlage auf sie an.

Zum Beispiel möchte ich /var/log/auth.log ändern Ausgabeformat, dann ändere ich :

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

zu :

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

Starten Sie dann Syslog neu (service syslog-ng restart ) und versuchen Sie, sich anzumelden, um die Änderungen in Ihrem auth.log zu sehen .


Ich hatte das gleiche Problem mit FreeBSD 9.2 und Zabbix Systemmonitor-GUI, die Dinge wie 'Jan' oder 'Feb' im Datumsstempel (!) der Systemprotokollmeldungen nicht verarbeiten kann.

Ich habe sysutils/syslog-ng installiert Port und verwenden Sie die convert-syslogconf.awk Skript zum Migrieren meines /etc/syslog.conf bis /usr/local/etc/syslog-ng.conf (was zum Glück auch mit einer ziemlich komplexen Konfiguration gut zu funktionieren schien) und fügte diese benutzerdefinierte Formatierungsvorlage zu allen file() hinzu Ziele:

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

Sie können (viele) weitere Formatierungsinformationen im Abschnitt 11.1 des syslog-ng-Handbuchs finden . Es funktioniert gut für mich (bisher) hoffe es hilft dir!


Linux
  1. Linux – Wie finde ich das Erstellungsdatum der Datei?

  2. Prozesssubstitution und Pipe?

  3. Wie stellt man das Datum im Epochenformat ein?

  4. Cookie – Ein vorlagenbasierter Dateigenerator für Projekte

  5. a.out durch ELF-Dateiformat ersetzt?

So formatieren Sie Festplattenpartitionen unter Linux

So verwenden Sie die Jinja2-Vorlage im Ansible Playbook

Ändern von Dateiberechtigungen in cPanel

eine Logdatei erstellen

Indiziertes Archivformat?

Ändern der Attribute „Erstellungsdatum“ und „Zuletzt geändert“ einer Datei in die einer anderen Datei