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


18

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

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

  • loggerArch Linuxでメッセージが表示されるとどうなりますか?
  • ログエントリはどこに保存されますか?(簡単なgrepが提案し/var/log/journal/*/system.journalます。)
  • このログにアクセスするにはどうすればよいですか?(特別なオプションは必要journalctlですか?)

回答:


15

ログメッセージはどこのジャーナルに表示されないため、syslogがジャーナル転送を正しくセットアップしておらず、メッセージが単純にドロップされていると思われます。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パッケージの仕事はjournald API呼び出しへのsyslog APIコールを変換することです。このようにして、syslogメッセージは最終的にジャーナルに入れられます。


syslog-ngインストールされたが有効ではなかったため、journaldが完全に置き換えたと想定しました。loggersyslog とのみ通信できますか?journaldにログインする正しい方法は何ですか?
ミカ14年

私はうまくいけばという明確にセクションを追加しました@michas
strugee

「[..] syslog API呼び出しをjournald API呼び出しに変換する」-私が見た限りでは、変換は逆の方法でのみ機能します。/var/log/にすべてのメッセージがありますが、journalctlにあるのはjournaldのみです。
ミカ14年

@michasそれはjournaldがすることかもしれないが、私にはわからない。syslog-ngsyslog宛てのメッセージをjournaldに転送します。
虐待14年

1
logger foobar;journalctl|grep foobarエントリは、システムリストに?
ミカ14年

0

一部のデーモンは/var/log/Arch Linuxでログを書き込まず、その設定syslog-ngは私が見た他の回答とは異なります。

通常のsyslog-ng.serviceサービスはありませんが、実際にはsyslog-ng@default.service代わりに名前が付けられています。

これは機能しません:

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

私は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.
#
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.