GNU/Linux >> Tutoriels Linux >  >> Linux

Changer le format de la date dans syslog

Il y a toujours de nouvelles options pour le problème de date, en ajoutant seulement quelques lignes.
Ma solution consiste à ajouter un fichier à /etc/rsyslog.d/ , par exemple myrsyslog.conf , puis ajoutez le format de votre choix, le mien est :

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

cela appliquera le nouveau format à vos journaux, ce qui facilitera leur analyse.

avant

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

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

Même si vous avez trouvé une solution différente, je donne une réponse pour les autres.

Editez votre fichier de configuration syslog (Sur Debian par exemple :/etc/syslog-ng/syslog-ng.conf ).

Déclarez ensuite un nouveau template comme celui-ci :

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

Ceci est un exemple mais vous pouvez utiliser différentes macros selon la documentation syslog liée dans la réponse de user9645.

Après cela, recherchez dans ce fichier de configuration, tous les fichiers dont vous souhaitez modifier le format de sortie et appliquez-leur ce modèle.

Par exemple, je veux changer /var/log/auth.log format de sortie, alors je change :

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

à :

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

Redémarrez ensuite syslog (service syslog-ng restart ) et essayez de vous connecter pour voir les changements dans votre auth.log .


J'ai eu le même problème avec FreeBSD 9.2 et Zabbix interface graphique du moniteur système qui ne peut pas gérer des éléments tels que "Jan" ou "Fév" dans l'horodatage (!) des messages du journal système.

Ce que j'ai fait, c'est installer le sysutils/syslog-ng port et utilisez le convert-syslogconf.awk script pour migrer mon /etc/syslog.conf à /usr/local/etc/syslog-ng.conf (qui heureusement semblait bien fonctionner même avec une configuration assez complexe) et a ajouté ce modèle de formatage personnalisé à tous les file() destination :

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

Vous pouvez trouver (beaucoup) plus d'informations sur le formatage dans la section 11.1 du manuel syslog-ng . Cela fonctionne bien pour moi (jusqu'à présent), j'espère que cela vous aidera !


Linux
  1. Modifier la date de création du fichier

  2. a.out remplacé par le format de fichier ELF ?

  3. Comment vérifier syslog dans Bash sous Linux ?

  4. Format de fichier de vidage de mémoire

  5. Obtenir la date de la dernière modification du fichier sous Linux

Comment formater des partitions de disque sous Linux

Comment utiliser le modèle Jinja2 dans Ansible Playbook

Substitution de processus et tuyau ?

Comment définir la date avec le format d'époque ?

Cookie - Un générateur de fichiers basé sur un modèle pour les projets

Modification des autorisations de fichiers dans cPanel