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