免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 4135 | 回复: 5
打印 上一主题 下一主题

怎样给嵌入式系统加syslog [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-07-26 10:42 |只看该作者 |倒序浏览
现在发现在FPGA的网络有问题.用UDP所有服务都没有问题,但是TCP的所有服务都有问题,所以想在系统里加入SYSLOG,希望能找到错误信息,但上网查过都没有这方面的文章,请大家帮帮忙吧,怎样能让嵌人式LINUX里有log文件产生!谢谢

论坛徽章:
0
2 [报告]
发表于 2006-07-26 13:15 |只看该作者
man syslog

论坛徽章:
0
3 [报告]
发表于 2006-07-26 19:32 |只看该作者

回复 1楼 rcazy 的帖子

Linux程式设计-syslog


在Linux下有个syslogd的Daemon程式,syslog是个系统管理员必看的档案。因此,如果您的程式有除错或安全讯息要显示,写到syslog是个很好的选择。
syslog有三个函数,使用上,一般您只需要用syslog(...)这个函数即可,一般使用状况下,openlog/closelog是可有可无的。
syslog()中的priority是facility及level的组合,其後参数的用法与printf无异。

头文件:
#include <syslog.h>

void openlog( char *ident, int option, int facility)
void syslog( int priority, char *format, ...)
void closelog( void )

openlog( char *ident, int option, int facility)
ident
此字符串内容一般就是这个程序的名称,它会输出到日志文件中。

option
用於openlog()的option参数可以是以下几个的组合:
LOG_CONS : 如果送到system logger时发生问题,直接写入系统console。
LOG_NDELAY : 立即开启连接(通常,连接是在第一次写入讯息时才打开的)。
LOG_PERROR : 将讯息也同时送到stderr
LOG_PID : 将该程序的PID也写入到日志文件

facility
facility参数用来指定何种程式在记录讯息,这可让设定档来设定何种讯息如何处理。
LOG_AUTH : 安全/授权讯息
LOG_AUTHPRIV : 安全/授权讯息
LOG_CRON : 时间守护神专用(cron及at)
LOG_DAEMON : 其它系统守护神(如telnet,ftp等等)
LOG_KERN : 核心讯息
LOG_LOCAL0到LOG_LOCAL7 : 保留
LOG_LPR : line printer次系统
LOG_MAIL : mail次系统
LOG_NEWS : USENET news次系统
LOG_SYSLOG : syslogd内部所产生的讯息
LOG_USER(default) : 一般使用者等级讯息
LOG_UUCP : UUCP次系统


syslog( int priority, char *format, ...)
priority
决定讯息的重要性. 以下的等级重要性逐次递减:
LOG_EMERG : 系统无法使用
LOG_ALERT : 必须要立即采取反应行动
LOG_CRIT : 重要状况发生
LOG_ERR : 错误状况发生
LOG_WARNING : 警告状况发生
LOG_NOTICE : 一般状况,但也是重要状况
LOG_INFO : 资讯讯息
LOG_DEBUG : 除错讯息

format
这之后的参数用法和printf()一样,见下面例子。

例:
.............................
        openlog(appname , LOG_NDELAY, LOG_DAEMON);       
        syslog(LOG_INFO, "connection from: %s\n", inet_ntoa(sa.sin_addr));
        closelog();
.............................
日志文件中会记录:
   utelnetd: connection from: 192.168.0.115

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
4 [报告]
发表于 2006-07-26 23:24 |只看该作者
syslog 很简单。
如果是 2.4.x 的话,
只需要将 syslogd 这个程序及其依赖的 .so 拷贝到目标机上去,
哦,别忘了一并拷贝 /etc/syslog.conf
然后在启动脚本启动一下就行了。

2.6.x 的话,需要连 klogd 一并拷贝过去。
2.6.x 的 klogd + syslogd 相当于 2.4.x 的 syslogd。

论坛徽章:
0
5 [报告]
发表于 2006-07-27 16:43 |只看该作者

那我的syslog为什么不能自动起来?

我用的2.6内核、busybox的syslogd,在/etc/init.d/rcS里面先klogd,再syslogd -O /var/log/message ,结果syslogd并没有启起来,非要等到进入shell后,手工 syslogd -O /var/log/message 才能起来。

论坛徽章:
0
6 [报告]
发表于 2006-08-03 15:48 |只看该作者
我是用2.6内核,原来要加上KLOGD才能跑起来的
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP