Où `logger` enregistre-t-il ses messages dans Arch Linux?


18

La loggercommande enregistre une entrée via syslog, qui place généralement cette ligne dans un fichier comme /var/log/messages.

Si je comprends bien la documentation dans Arch Linux, toute la journalisation est effectuée via systemd, mais je ne trouve pas les loggerentrées à l'aide de journalctl.

  • Que se passe-t-il exactement avec un message donné loggerdans Arch Linux?
  • Où est stockée l'entrée de journal? (Un rapide rappel suggère /var/log/journal/*/system.journal.)
  • Comment puis-je accéder à ce journal? (Ai-je besoin d'une option spéciale pour journalctl?)

Réponses:


15

Étant donné que les messages du journal n'apparaissent nulle part dans le journal , je soupçonne que vous n'avez pas configuré correctement le transfert syslog vers journald et que les messages sont simplement supprimés. Puisque vous êtes sur Arch, cela est facile à corriger. Assurez-vous que le syslog-ngpackage est installé:

pacman -S syslog-ng

Assurez-vous ensuite qu'il est activé au démarrage:

systemctl enable syslog-ng

Enfin, étant donné que l'activation des services ne les démarre pas automatiquement, démarrez le service:

systemctl start syslog-ng

Voir cette page Arch Wiki pour plus de détails.

Voici quelques informations expliquant pourquoi ce problème se produit:

Il existe une certaine manière de se connecter au syslog classique, et il existe une certaine manière de se connecter au nouveau journal systemd. Ce sont incompatibles; les applications qui prennent en charge syslog ne peuvent pas être créées par magie pour prendre en charge le journal - l'auteur doit implémenter explicitement cette fonctionnalité. Les applications qui prennent en charge le journal systemd sont généralement appelées prendre en charge "l'API native" lorsqu'elles s'exécutent sur un système systemd.

Étant donné que l'API syslog et l'API journald sont différentes, les applications qui ne prennent pas en charge l'API journald verront simplement leurs messages de journal supprimés. C'est ce qui se passait dans votre cas.

Le syslog-ngtravail du package consiste à traduire les appels d'API syslog en appels d'API journald. De cette façon, les messages syslog finissent par arriver dans le journal.


syslog-nga été installé mais pas activé, j'ai supposé que journald l'avait complètement remplacé. Est loggerseulement capable de parler à syslog? Quelle est la bonne façon de se connecter à journald alors?
michas

@michas J'ai ajouté une section qui, je l'espère, clarifiera cela
strugee

"[..] pour traduire les appels d'API syslog en appels d'API journald" - Pour autant que je vois, la traduction ne fonctionne que dans le sens inverse: je trouve tous les messages dans / var / log / mais seulement ceux de journald dans journalctl.
michas

@michas qui peut être quelque chose que fait Journalald, je ne suis pas sûr. syslog-ngtransfère les messages adressés à syslog à journald.
strugee

1
Est -ce que logger foobar;journalctl|grep foobarsur votre liste de système une entrée?
michas

0

Certains démons n'écrivaient pas de journaux /var/log/dans Arch Linux et la configuration de syslog-ngest différente des autres réponses que j'ai vues.

Le syslog-ng.serviceservice normal n'est pas là, il est en fait nommé à la syslog-ng@default.serviceplace.

Cela ne fonctionnera pas:

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

Je dois le faire légèrement différent selon l' 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.
#
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.