Vždy existují nové možnosti pro problém s datem přidáním pouze několika řádků.
Mým řešením je přidání souboru do /etc/rsyslog.d/
, například myrsyslog.conf
, poté přidejte formát podle svého výběru, můj je:
$template myformat,"%TIMESTAMP:1:10:date-rfc3339% %TIMESTAMP:19:12:date-rfc3339% %syslogtag%%msg%\n"
$ActionFileDefaultTemplate myformat
tím se použije nový formát na vaše protokoly, což usnadní analýzu.
před
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 ...
po
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...
I když jste našli jiné řešení, dávám odpověď pro ostatní.
Upravte svůj konfigurační soubor syslog (například v Debianu:/etc/syslog-ng/syslog-ng.conf
).
Poté deklarujte novou šablonu takto:
template template_date_format { template("${YEAR}-${MONTH}-${DAY} ${HOUR}:${MIN}:${SEC} ${HOST} ${MSGHDR}${MSG}\n"); template_escape(no); };
Toto je příklad, ale můžete použít různá makra podle dokumentace syslog spojené v odpovědi uživatele 9645.
Poté najděte v tomto konfiguračním souboru všechny soubory, u kterých chcete změnit výstupní formát, a použijte na ně tuto šablonu.
Například chci změnit /var/log/auth.log
výstupní formát, pak změním :
destination d_auth { file("/var/log/auth.log"); };
do :
destination d_auth { file("/var/log/auth.log" template(template_date_format)); };
Poté restartujte syslog (service syslog-ng restart
) a zkuste se přihlásit, abyste viděli změny v auth.log
.
Měl jsem stejný problém s FreeBSD 9.2 a Zabbix GUI monitoru systému, které nezvládá věci jako 'Jan' nebo 'Feb' v datovém razítku (!) ve zprávách systémového protokolu.
Udělal jsem instalaci sysutils/syslog-ng
port a použijte convert-syslogconf.awk skript pro migraci mého /etc/syslog.conf
na /usr/local/etc/syslog-ng.conf
(která naštěstí fungovala dobře i s poměrně složitou konfigurací) a přidal tuto vlastní šablonu formátování do všech file()
destinace:
template t_msgfmt {
template("${ISODATE} ${HOST} ${FACILITY} ${LEVEL} ${MSGHDR}${MSG}\n");
template_escape(no);
};
Více informací o formátování naleznete v příručce syslog-ng v sekci 11.1 . Pro mě to funguje dobře (zatím), doufám, že vám to pomůže!