カーネルログメッセージを読み取るためのファイル記述子?

カーネルログメッセージを読み取るためのファイル記述子?

syslogカーネルログメッセージを読み取るには、SYSLOG_ACTION_READを使用します。

(syslogが提供するように)カーネルログを送信するためにファイル記述子を「インポートする」ことが可能かどうか疑問に思います。実際、私はselect私のアプリケーションでこのファイル記述子を監視したいと思います(すでに他のudev関連のファイル記述子を監視しているからです)。

また、設定できる余地があるかどうかを知りたいです(たとえば、ログレベルの設定、人間が読める形式でタイムスタンプをフォーマットするなど)。

私の要件の一部または全部が不可能な場合は、どのようなアプローチをお勧めしますか?

ベストアンサー1

実行してstrace dmesg何を読んでいるかを確認してください。

# strace -e '!read,write' dmesg >/dev/null
open("/dev/kmsg", O_RDONLY|O_NONBLOCK)  = 3

フォーマットを変更したりメッセージをフィルタリングしたりするパラメータはなく、デバイスから読み取ることはプログラムの操作です。

syslogを実行している場合は、カーネルログを直接読み取るよりも、ログがエクスポートするログ(パイプに書き込むことができます)を観察することをお勧めします。

おすすめ記事