之前只知道 dmesg 可以用来助用户了解系统的启动信息,现在接触了openwrt,发现了logread。
logread是在调试luci的时候用到的,极其方便,对于不太了解OpenWrt系统构成对人尤甚。
这个需要写进程对人对syslogd提供支持,否则说来知识惘然,我们需要做系统,需要做好对系统,就需要油完善对日志管理,精简无冗余对才是最有用的,这是我们使用其的目的。废话不多说,直接看卡logread的组成吧
在busybox中实现了syslogd 和 logread.
syslogd用来记录log, logread则用来读取log.
logread的代码很简洁,主要实现过程是:连接共享内存->信号量加锁->读取共享内存中的信息并输出->信号量解锁
正如openwrt官网wiki所说Older OpenWrt releases (AA and earlier ones) were using BusyBox's syslogd
(and logread
) while the newer ones (BB and later) use ubox's logd
and logread
.老版本用 syslogd与logread,新版本用logd与logread
-
logd
– a deamon creating/dev/log
socket, forwarding kernel messages & providing ubuslog
object (withread
andwrite
commands) -
logread
– a tool for reading messages usingubus
, see help messages for its usage
而logd产生的log 好像是一块内存 /sbin/logd -S 16 16kb,这块还不是很了解
要想输出自己的log,用logread读取到,就要用到logger这个工具
logger -t wsz hello 指定特定的标签名来打印信息,默认是用户名
logger -s hello 直接输出到stderr ,logread读不到logger -p 1 指定优先级