我使用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,那么观察它发出的日志(您可以将其记录到管道)是有意义的,而不是直接读取内核日志。