web-dev-qa-db-ja.com

`logger`はArch Linuxのどこにメッセージを記録しますか?

loggerコマンドは、syslogを介してエントリを記録します。syslogは通常、その行を/var/log/messagesなどのファイルに書き込みます。

Arch Linuxで ドキュメント を正しく理解している場合、すべてのロギングはsystemdを介して行われますが、loggerを使用してjournalctlエントリを見つけることができません。

  • Arch Linuxでloggerに与えられたメッセージで正確に何が起こりますか?
  • ログエントリはどこに保存されますか? (簡単なgrepは/var/log/journal/*/system.journalを提案します。)
  • このログにアクセスするにはどうすればよいですか? (journalctlに特別なオプションは必要ですか?)
18
michas

ログメッセージがジャーナルのどこにも表示されないため、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メッセージは最終的にジャーナルに入ります。

15
strugee

一部のデーモンは、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].
#
0
Lloyd Rochester