logger
コマンドは、syslogを介してエントリを記録します。syslogは通常、その行を/var/log/messages
などのファイルに書き込みます。
Arch Linuxで ドキュメント を正しく理解している場合、すべてのロギングはsystemdを介して行われますが、logger
を使用してjournalctl
エントリを見つけることができません。
logger
に与えられたメッセージで正確に何が起こりますか?/var/log/journal/*/system.journal
を提案します。)journalctl
に特別なオプションは必要ですか?)ログメッセージがジャーナルのどこにも表示されないため、syslogがjournald転送に正しく設定されておらず、メッセージが単に落とされているだけです。 Archを使用しているので、これは簡単に修正できます。 syslog-ng
パッケージがインストールされています:
pacman -S syslog-ng
次に、起動時に有効になっていることを確認します。
systemctl enable syslog-ng
最後に、サービスを有効にしても自動的に開始されないため、サービスを開始します。
systemctl start syslog-ng
詳細は このArch Wikiページ を参照してください。
この問題が発生する理由の背景は次のとおりです。
従来のsyslogにログを記録する特定の方法があり、新しいsystemdジャーナルにログを記録する特定の方法があります。これらは互換性がありません。 syslogをサポートするアプリケーションを魔法のようにジャーナルをサポートするように作成することはできません。作成者はこの機能を明示的に実装する必要があります。 systemdジャーナルをサポートするアプリケーションは、systemdシステムで実行する場合、一般に「ネイティブAPI」をサポートすると呼ばれます。
Syslog APIとjournald APIは異なるため、journald APIをサポートしないアプリケーションでは、ログメッセージが削除されるだけです。これはあなたのケースで起こっていたものです。
syslog-ng
パッケージの仕事は、syslog API呼び出しをjournald API呼び出しに変換することです。このようにして、syslogメッセージは最終的にジャーナルに入ります。
一部のデーモンは、Arch Linuxの/var/log/
にログを書き込まず、syslog-ng
の構成は、私が見た他の回答とは異なります。
通常のsyslog-ng.service
サービスはありません。実際の名前は[email protected]
です。
これは動作しません:
# systemctl enable syslog-ng
Failed to enable unit: Unit file syslog-ng.service does not exist.
Arch Wiki ごとに少し異なる方法で行う必要があります。
# systemctl start [email protected]
# systemctl enable [email protected]
Created symlink /etc/systemd/system/multi-user.target.wants/[email protected] → /usr/lib/systemd/system/[email protected].
#