syslog提供一个机制,给各个应用程序记录日志。glibc提供了接口来发送log给syslog的守护进程,这个守护进程通常是syslogd。
c库提供的接口:
1 2 3 4 5 | void openlog( const char *ident, int option, int facility); void syslog( int priority, const char *format, ...); void closelog( void ); void vsyslog( int priority, const char *format, va_list ap); |
syslogd和c库通过/dev/log通信,这是一个Unix域套接字。syslogd监听这个套接字,收集所有的syslog。
1 2 | # ls /dev/log -l srw-rw-rw- 1 root root 0 Oct 3 01:32 /dev/log |
在openwrt系统里面,ubox提供了logd守护进程,收集syslog和kernel log。ubox还提供logread程序,读取所有logd收集的syslog和kernel log。
busybox提供logger程序,实现在命令行记录syslog。
参考:
glibc manual: https://www.gnu.org/software/libc/manual/html_node/Syslog.html