syslog服务

最近在项目开发过程中使用到点击记录的功能,实现方式是通过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;
}

在客户端编译执行,查看结果!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容