„Logger” trimite date către socket-ul Unix /dev/log
. (Este un socket în ciuda faptului că este în /dev.)
Pe majoritatea distribuțiilor Linux, acest socket este nu mai deținut de un demon syslog tradițional â celălalt capăt al său nu merge direct la rsyslog. Mai degrabă, socket-ul /dev/log este deținut de systemd-journald serviciu, care încă rulează și primește mesaje.
# fuzor -v /dev/log
COMANDA DE ACCES PID UTILIZATOR
/run/systemd/journal/dev-log: root 1 F.... systemd
root 304 F.... systemd-journal
(Rețineți că init deține și socket-ul – dacă journald este oprit, dar există o anumită activitate pe socket, init va porni automat serviciul din nou… la fel cum a făcut „inetd” în trecut pentru serviciile TCP.)
Systemd-journald stochează jurnalele în /var/log/journal, pe care le puteți citi folosind journalctl -f
în loc de „taila -f” obișnuită (sunt în format binar indexat). În mod normal, mesajele prin /dev/log vor continua să fie scrise acolo chiar și atunci când rsyslogd este oprit.
$ logger Bună ziua
$ journalctl -n 1
12 iulie 18:12:26 rădăcină de jar[951422]: Bună
În astfel de sisteme, pachetele rsyslogd și syslog-ng primesc doar transmise mesaje de la systemd-journald, nu direct din programe.Acestea funcționează fie ascultând la un alt soclu (în interiorul /run/systemd), către care journald redirecționează toate mesajele â sau citind direct fișierele jurnal binare din /var/log/journal.
(De obicei, accesul direct la fișierul .journal este preferat, deoarece permite rsyslogd să colecteze câmpuri suplimentare incluse de programe, care altfel s-ar pierde atunci când se utilizează redirecționarea mesajelor bazată pe socket.)
Dacă indicați „logger” către un socket Unix care nu acceptă mesaje, acesta va afișa de fapt un mesaj de eroare așa cum ar trebui:
$ python -c "din importul socketului *; socket(AF_UNIX, SOCK_DGRAM).bind('/tmp/log')"
$ logger -u /tmp/log Bună ziua
logger: socket /tmp/log: Conexiune refuzată