步骤:1. 服务端配置vi /etc/sysconfig/syslog       
sysLOGD_OPTIONS = “-r –m 0”   ## -r意思是接受远程的日志
重起syslog 服务/etc/rc.d/init.d/syslog   restart

步骤:2. 客户端配置busybox中的System Logging Utilities

[*] syslogd

[*]   Rotate message files

[*]   Remote P

选上。

开启板子,敲入指令:syslogd -R 10.0.0.175 //将日志信息发送到服务端IP 10.0.0.175

测试例子:

/*
testsyslog.c
*/
#include <syslog.h>
int main(int argc, char **argv)
{
// syslog(LOG_ERR|LOG_USER,"test - %m/n");
openlog("SyslogTest", LOG_CONS | LOG_PID, LOG_LOCAL1);
syslog(LOG_DEBUG,"This is a syslog test message generated by program '%s'/n",argv[0]);
closelog();

return 0;
}

交叉编译完后,在板子里运行./testsyslog,本地/var/log/messages会有一些日志信息,服务端/var/log/syslog也会有日志信息。

板子:

# syslogd -R 10.0.0.175

# ./testsyslog
# cat /var/log/messages
Apr 24 18:30:54 SIP-IAD syslog.info syslogd started: BusyBox v1.12.1

服务端:

$ tail -f /var/log/syslog

Apr 24 03:29:50 ubuntu mountd[1428]: authenticated mount request from 10.0.0.132:989 for /home/chencx/work/voip/nfsroot (/home/chencx/work/voip/nfsroot)

【参考】:

linux 远程日志的配置 syslog.conf配置

syslog与syslog服务器的配置

 

===================================================================================================================================


Syslog机制是类unix系统中经常使用的一种日志记录方式。它能够以多种级别组合记录系统运行过程中各类日志信息。比如内核运行信息日志,程序运行输出的日志等。在为嵌入式系统做开发时,将程序运行时的一些重要信息写入日志中,对于程序的调试以及错误诊断帮助是非常大的。重要信息包括程序运行时的重要变量,函数运行结果,错误记录等等。对于嵌入式系统而言,由于系统资源有限,而且是交叉开发,调试及诊断及其不便。使用syslog机制,可大大简化这些工作。


       并不是所有嵌入式系统都可以使用syslog。首先,系统使用类unix操作系统,常用的就是linux。其次,为了支持远程日志记录,系统中必须支持网络通信。所幸,目前大部分嵌入式系统都是基于linux,并且支持网络。以下论述具体实现。


       在编译busybox时,选择syslog应用程序,并将busybox加入到linux的文件系统中去。嵌入式系统启动后,就可以配置syslog的客户端。根据busybox版本,syslog的服务进程syslogd的配置有所不同。早期的syslogd忽略syslog.conf文件内的配置项,直接使用命令参数进行配置。新版本的syslogd支持使用syslog.conf文件进行配置。可以通过syslogd –h察看帮助信息,以确定当前的syslogd版本。


       当不支持syslog.conf配置时,直接使用命令参数,输入以下命令启动syslogd:


       syslogd -n -m 0 -L -R 192.190.1.88


       其中-n选项表示进程在前台运行。


-m选项指定循环间隔时间。


-L选项表示在进行远程日志记录的同时,本地也进行记录。如果不加该选项,则只进行远程日志记录。


-R表示进行远程日志记录,将syslog日志发送到目标服务器上。这里假定目标服务器为的IP地址为192.190.1.88。如果不指定端口,默认使用UDP端口514。所以要确保服务器上该端口没用被占用。


启动后,所有的日志信息都会发往服务器的UDP端口514。



当支持syslog.conf配置时,只需修改该配置文件即可。在文件中增加以下语句:


*.*     @192.190.1.88


以上配置表示将所有syslog的日志发往服务器192.190.1.88,使用默认的UDP端口。由于syslog.conf配置相对比较灵活,可以设置屏蔽一些不需要的信息,以及设置指定的端口等等。请参考syslog.conf的有关命令,自行研究。然后启动syslogd即可进行远程记录。



服务器端,可以使用各种操作系统。一般用户都使用windows为主,这就需要在windows上运行的syslog服务器程序。这里推荐两个软件:


Syslog watche 下载地址:

​​​http://www.greendown.cn/soft/15983.html​


该软件为免费软件,无使用限制。


Kiwi SyslogServer 下载地址:


​​http://www.solarwinds.com/register/kiwi_registration.aspx?Program=876&c=70150000000Es8J​​


该软件为免费试用版,有功能限制以及30天试用限制。


这些软件使用非常简单,安装后,直接运行即可,除非使用自定义的UDP端口,否则不需要做其他额外设置。一旦客户端运行后,即可看到日志信息。

==================================================================================================================================

在嵌入式系统中,因为存储空间等资源有限,不可能像在PC机上一样记录所有的系统运行日志。在嵌入式上syslog日志的目标只是记录相关程序的运行错误信息或由用户设置日志显示级别而查看相关的日志,以及调试程序时查看日志信息。在具体选择时,可以用一些syslogd项目提供的源代码,另外就是移植busybox中的syslogd程序。下面主要介绍从busybox中移植出syslogd.c的方法和步骤,然后再介绍syslog-ng包的编译和使用。

<!--[if !supportLists]-->1.1 <!--[endif]-->从Busybox移植syslogd

Busybox的根目录下有一个sysklogd目录,里面就是提供给busybox命令syslogd的程序代码,syslogd.c文件就是我们要分解出来的主文件。

<!--[if !supportLists]-->1.1.1 <!--[endif]-->编译syslogd步骤

其实方法很简单,只需把syslogd.c文件单独拷贝出来,单独编译:

#gcc –o syslogd syslogd.c

这过程中会有很多错误,根据错误原因在目录sysklogd和include下的查看相关的文件,把所需要的宏、结构定义、相关的函数原型等都拷贝到syslogd.c文件中,这样反复编译,直到编译成功,那么syslogd可执行程序就是我们需要的。

要注意的是,需要根据busybox-1.2.0/sysklogd/config.in文件中的解释,打开syslogd.c文件中的相关的宏定义,在我的程序中我打开了所有的宏定义。

附件中是我分离好的qsyslogd.c文件,已经编译通过并实验可以使用,

附件:​​qsyslogd​

<!--[if !supportLists]-->1.1.2 <!--[endif]-->运行qsyslogd及验证
Qsyslogd有两个主要的选项:
<!--[if !supportLists]-->l <!--[endif]-->qsyslogd –R 192.168.21.49 表示把syslog信息通过网络传到192.168.21.49的机器上
<!--[if !supportLists]-->l <!--[endif]-->qsyslogd –L 表示在终端界面上显示syslog信息

建立文件mylog.c,并编译运行,

#include <syslog.h>
#include <stdio.h>
int main()
{
syslog(LOG_USER|LOG_INFO, "hello world, test logger ^_^\n");
return 0;
}
#gcc –o mylog mylog.c
#./mylog

查看文件/var/log/messages文件就可以看到我们输出的syslog日志信息了。

<!--[if !supportLists]-->1.2 <!--[endif]-->syslog-ng的编译和使用

syslog-ng是BalaBit公司开发和维护的,遵循GNU。意指下一代日志系统,www.britepic.org它建立了更好的消息过滤粒度。可以下载syslog-ng-1.6.9.tar.gz版本。编译只需configure make即可,编译后再src目录下生成bin文件syslog-ng,下一步运行syslog-ng即可。Syslog-ng运行时需要syslog-ng.conf配置文件。在运行时指定特定的配置文件就可以了,比如:

#syslog-ng –f /home/qibing/syslog-ng.conf

在目录sample下有各个系统配置文件的原型,可以在这些配置文件原型上做相应的修改,一般只需修改dmsg字段。要查看日志信息到dmsg字段指定的文件查看即可。

建立文件test.c并编译运行,

#include <syslog.h>
#include <stdio.h>
int main()
{
syslog(LOG_USER|LOG_INFO, "hello world, test logger ^_^\n");
return 0;
}

则到dmsg字段指定的文件中即可查看输出的日志信息。