注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

gmd20的个人空间

// 编程和生活

 
 
 

日志

 
 

syslog协议和syslogd实现相关的一些资料  

2012-11-28 15:39:04|  分类: 程序设计 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
http://en.wikipedia.org/wiki/Syslog
http://linux.die.net/man/3/syslog

syslog规范很简单,按照指定的文本格式输出log即可
RFC 5424 The Syslog Protocol
http://tools.ietf.org/html/rfc5424

udp传输很简单,直接没条log文本放到一个udp包发送出去就可以了。
RFC 5426 Transmission of Syslog Messages over UDP
http://tools.ietf.org/html/rfc5426

默认的syslogd 很简单,源码在这里,当然也有其他的开源实现 syslog-ng  klogd 等:
Inetutils - GNU network utilities
http://www.gnu.org/software/inetutils/

http://git.savannah.gnu.org/cgit/inetutils.git/tree/src

--------------------------
main  () {
char line[MAXLINE + 1];     最大一行长度 1024个字符,局部变量 
   while(1) { 
memset (line, '\0', sizeof (line));
result = recvfrom (fdarray[i].fd, line, MAXLINE, 0,
  (struct sockaddr *) &frominet, &len)
if (result > 0)
 {
   line[result] = '\0';
   printline (cvthname ((struct sockaddr *) &frominet, len), line);  这个应该是同步写文件了。 默认每次写log都调用 fsync 


printline   -> fprintlog ->  writev  open fsync 等文件函数写入文件。
 ---------------------------

代码其他特点:
会判断消息重复,然后重复的消息就不写入文件了。
过滤选项,只保存需要的log。


像 log4cxx这种 log库是直接支持写入syslog 后端的,配置使用 syslog的 appender就可以了

rsyslog syslog-ng  这种后端应该别这个系统默认的syslogd要功能多一点,可以默认保存到数据库里面等等。 

rsyslog http://www.rsyslog.com/   一个syslog的服务器,用于替换系统默认的syslogd,好像功能比较多,性能应该好点。

有同事提到facebook开源的日志收集服务器,scribe  https://github.com/facebook/scribe 客户端通过thrift把日志发送到scribe服务器。服务器集中保存到 hadoop之类的系统上去,便于后续分析吧。看上去也很不错

看上去个默认的syslogd的实现方式应该不是很适合我们这种大流量的log的使用。他里面 字符串比较复制等比较多,没写一条记录都fsync一次文件,应该比较影响性能?
测试一下看看。














 
  评论这张
 
阅读(1028)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017