Proč mám pro účely protokolování jádra tři různé nezahrnuté úrovně protokolování mezi /var/log/messages
, /var/log/syslog
a /var/log/kern.log
?
Nejlepší odpověď
Syslog je standardní protokolovací zařízení. Shromažďuje zprávy různých programů a služeb včetně jádra a ukládá je, v závislosti na nastavení, do hromady souborů protokolu obvykle pod /var/log
. V některých nastaveních datových center jsou jich stovky zařízení, z nichž každé má svůj vlastní protokol; syslog přijde vhod i zde. Stačí nastavit vyhrazený server syslog, který shromažďuje všechny jednotlivé protokoly zařízení přes síť. Syslog může také ukládat protokoly do databází a dalších klientů.
Podle mého /etc/syslog.conf
, výchozí /var/log/kern.log
zachycuje pouze zprávy jádra jakékoli úrovně protokolu; tj. výstup dmesg
.
/var/log/messages
místo toho se zaměřuje na ukládání hodnotných, neladících a nekritických zpráv. Tento protokol by měl být považován za protokol „obecné aktivity systému“.
/var/log/syslog
na oplátku zaznamenává vše, kromě zpráv souvisejících s ověřováním.
Další zajímavé standardní protokoly spravované systémem syslog jsou /var/log/auth.log
, /var/log/mail.log
.
Aktualizace pro rok 2020
Stále můžete narazit na syslog; ale výchozí hodnoty se změnily.
journald
nahradil syslog v poměrně velké části systémů, včetně Ubuntu.
To je relevantní, protože nenajdete /var/log/messages
že už často. journald
nezapisuje protokoly ve formátu prostého textu – používá svůj vlastní, komprimovaný a částečně ověřený formát.
Hledejte online např. Journalctl cheatsheet nebo si prostudujte man 8 systemd-journald
, man 1 journalctl
sebe.
Syslog a journald jsou do určité míry vzájemně kompatibilní; můžete mezi nimi přepravovat klády v obou směrech. Nebudete však dostávat protokoly v prostém textu a-la /var/log/messages
s journald; a nebudete strukturováni (journalctl -o json-pretty
) a ověřené protokolování pomocí syslog.