Dove logger registra i suoi messaggi in Arch Linux?


18

Il loggercomando registra una voce tramite syslog, che di solito inserisce quella linea in un file simile /var/log/messages.

Se comprendo correttamente la documentazione in Arch Linux, tutte le registrazioni vengono eseguite tramite systemd, ma non riesco a trovare le loggervoci usando journalctl.

  • Cosa succede esattamente con un messaggio dato ad loggerArch Linux?
  • Dove si trova la voce di registro? (Un veloce suggerimento suggerisce /var/log/journal/*/system.journal.)
  • Come posso accedere a questo registro? (Ho bisogno di un'opzione speciale per journalctl?)

Risposte:


15

Poiché i messaggi di registro non compaiono nel diario da nessuna parte , ho il sospetto che non abbiate syslog per l'inoltro dei giornali impostato correttamente e che i messaggi vengano semplicemente eliminati. Dato che sei su Arch, questo è facile da risolvere. Assicurarsi che il syslog-ngpacchetto sia installato:

pacman -S syslog-ng

Quindi assicurati che sia abilitato all'avvio:

systemctl enable syslog-ng

Infine, poiché l'abilitazione dei servizi non li avvia automaticamente, avvia il servizio:

systemctl start syslog-ng

Vedi questa pagina Wiki Arch per i dettagli.

Ecco alcuni retroscena del perché si verifica questo problema:

C'è un certo modo per accedere al syslog classico e c'è un certo modo per accedere al nuovo journal di systemd. Questi sono incompatibili; le applicazioni che supportano syslog non possono essere magicamente realizzate per supportare il journal - l'autore deve implementare esplicitamente questa funzione. Le applicazioni che supportano il journal di systemd vengono generalmente chiamate "API native" quando sono in esecuzione su un sistema systemd.

Poiché l'API syslog e l'API journald sono diverse, alle applicazioni che non supportano l'API journald verranno semplicemente eliminati i messaggi di registro. Questo è ciò che stava accadendo nel tuo caso.

Il syslog-nglavoro del pacchetto consiste nel tradurre le chiamate API syslog in chiamate API journald. In questo modo, i messaggi syslog finiscono per essere inseriti nel journal.


syslog-ngera installato ma non abilitato, immaginavo che Journald lo avesse sostituito completamente. È in loggergrado di parlare solo con syslog? Qual è il modo corretto di accedere a journald allora?
Michas

@michas Ho aggiunto una sezione che si spera chiarisca che
strugee

"[..] per tradurre le chiamate API syslog in chiamate API journald" - Per quanto vedo, la traduzione funziona solo al contrario: trovo tutti i messaggi in / var / log / ma solo quelli di journald in journalctl.
michas

@micha potrebbe essere qualcosa che Journald fa, non ne sono sicuro. syslog-nginoltra i messaggi indirizzati a syslog a journald.
Strugee,

1
Nel logger foobar;journalctl|grep foobartuo sistema è presente una voce?
michas

0

Alcuni demoni non scrivevano log /var/log/in Arch Linux e la configurazione per syslog-ngè diversa dalle altre risposte che ho visto.

Il syslog-ng.serviceservizio normale non c'è, in realtà è syslog-ng@default.serviceinvece chiamato .

Questo non funzionerà:

# systemctl enable syslog-ng
Failed to enable unit: Unit file syslog-ng.service does not exist.

Devo farlo leggermente diverso per Arch Wiki :

# systemctl start syslog-ng@default.service
# systemctl enable syslog-ng@default.service
Created symlink /etc/systemd/system/multi-user.target.wants/syslog-ng@default.service → /usr/lib/systemd/system/syslog-ng@.service.
#
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.