今天调试syslog 输出系统日志的功能。
1. busybox 的 syslogd
用busybox自带的syslogd 搞了半天,只会生成出 /var/log/messages 文件,里面没有dmesg的内容。
后来网上查了一下才知道,syslog不会自动导出printk内容,只能通过klogd 来导出,也就是sysklogd工具,它包含了klogd 和 syslogd。
busybox中,syslogd, klogd, logger 都是有的,但是没有配置脚本。
busybox的 syslogd 也可以搞出来:
a. PC端: install sysklogd in PC
# sudo apt-get install sysklogd
#vi /etc/default/syslogd
change SYSLOGD="" to SYSLOGD="-r -m 0"
# sudo service sysklogd restart
# netstat -tlunp udp 514 port should be enabled on PC, as follow:
udp 0 0 0.0.0.0:514 0.0.0.0:*
b. klogd:
run klogd and syslogd on TCM-board
# /bin/dd bs 1 if /proc/kmsg of /var/run/klogd/kmsg &
# /sbin/klogd /var/run/klogd/kmsg
c. syslogd -m 0 -L -R 192.168.100.2
这样就可以看本地和PC端的 /var/log/message.
2. ubuntu sysklogd 软件
ubuntu可以直接安装:
sudo apt-get install sysklogd
安装后会有2个进程: klogd 和 syslogd
wr43@xxha:~/WindRiver/workspace/5_tcm2065_prj/build/linux$ ps -ax | grep syslogd
Warning: bad ps syntax, perhaps a bogus '-'? See http://procps.sf.net/faq.html
25819 ? Ss 0:00 /sbin/syslogd -r -m 0 -u syslog
26139 pts/7 S+ 0:00 grep --color=auto syslogd
wr43@xxha:~/WindRiver/workspace/5_tcm2065_prj/build/linux$ ps -ax | grep klogd
Warning: bad ps syntax, perhaps a bogus '-'? See http://procps.sf.net/faq.html
25619 ? S 0:00 /bin/dd bs=1 if=/proc/kmsg of=/var/run/klogd/kmsg
25621 ? Ss 0:00 /sbin/klogd -P /var/run/klogd/kmsg
26142 pts/7 S+ 0:00 grep --color=auto klogd
如果要日志存储服务器需要接收发送方的syslog日志,则需要配置/etc/default/syslogd 文件
SYSLOGD="" to SYSLOGD="-r -m 0" //表示开启UDP 514 端口监听功能, 扫描周期是0。
sudo service sysklogd restart //重新启动服务。
发送方需要配置 /etc/syslog.conf :
# vi /etc/syslog.conf
添加 *.info @192.168.100.2
然后,先开启klogd 服务:
/bin/dd bs=1 if=/proc/kmsg of=/var/run/klogd/kmsg & //创建一块内存区。
/sbin/klogd /var/run/klogd/kmsg //开启klogd服务
再开启syslogd 服务
/sbin/syslogd -l 8 -m 0 //设置level 等级8, 打印全部log。
测试工具可以用looger:
# logger “hello test”
在发送端和接收服务器的 /var/log/messages 中都会更新出
hello test 消息。