最近在项目开发过程中使用到点击记录的功能,实现方式是通过syslog的方式将日志送到log服务器,由log服务器统计点击数据供服务端参考。
centos6.5及以上版本使用的是rsyslog服务,可以理解为syslog的增强版。下边记录一下客户端和服务端的配置,以便下次使用的时候方便查询。
服务端配置
$ModLoad imtcp
$InputTCPServerRun 514
$template RemoteLogs,"/var/log/%HOSTNAME/%PROGRAMNAME%.log"
local5.* ?RemoteLogs
主要是上述四行,开启tcp端口,保持默认端口即可,更改端口注意在防火墙开发相应端口。另外就是指定模板,最后一行是需要使用这个模板输出的日志类型。
我们看一下模板规则,这个规则是以主机名为目录,然后以输出的项目名为文件名记录log,这次主机记录的是local5级别的日志,主要目的是通过不同的log名,统计用户的点击数量,所以服务器的模板规则应该就是这一种。
客户端配置
local5.* @@192.168.1.170
$EscapeControlCharactersOnReceive off
客户端就简单许多了,就是制定输出的服务器地址@@代表的是通过tcp方式传输,@就是udp了,如果我们更改端口的话就加上一个端口号,默认端口的话可以带端口。
后边这一行的作用是关闭rsyslog默认转译ASCII的所有怪异字符,包括换行符等。
最后我们测试一下效果,通过c代码来测试
#include <syslog.h>
int main(int argc, char **argv)
{
openlog("可变更的日志名", LOG_CONS | LOG_NDELAY, LOG_LOCAL5);
syslog(LOG_INFO,"This is a syslog test file!");
closelog();
return 0;
}
在客户端编译执行,查看结果!