Linux下的syslog日志守护进程深入理解(2)

syslog也是一个守护进程,准确的说应该是rsyslog,位于/etc/rc.d/init.d/rsyslog,这是syslog的启动脚本。当我们修改了启动交而不能文件中的内容之后,需要使用【service rsyslog restart】命令重启该服务。

syslog不仅仅用来记录本机文件的日志信息,更多的是作为一个日志服务器,用来接收远程系统的信息。对该服务的启动,有两个常用选项:

-r:将当前主机作为日志服务器,监听514端口上进来的UDP包,接收远程系统的信息。没有该选项,将不会接收来自远程系统的信息。

-h:使得当前日志服务器能够传送日志信息,

如何配置一个中央日志服务器:

1、编辑/etc/sysconfig/rsyslog(CentOS6.5之前的版本该文件叫做syslog),该文件中可以声明,启动该服务的时的启动选项。

-r:上面提到过,表示允许接收外来日志消息;

-m **:将默认的时间戳标记信息出现频率变为自己指定的值【eg: -m240,表示每240分钟在日志文件中增加一行时间戳消息】;

-x:表示不希望让中央日志服务器解析其他机器的FQDN(完全合格域名,指的是主机名+全路径);

SYSLOGD_OPTIONS="-r -x -m 240 -c 5"

2、重启rsyslog服务

service rsyslog restart

3、关闭防火墙(iptables),允许514号端口上的连接通过;

4、对客户机进行配置syslog

方法一:在客户机上syslog的配置文件中,对有关配置行的操作动作部分用“@”字符指向中央日志服务器,而不用指向本机的 /var/log/.....

# Log all the mail messages in one place.

mail.*     @192.168.3.24

方法二:在DNS中定义一个机器,命名随意,这里以“loghost”为例,然后将客户机的配置文件改为如下形式。这样就可以避免以后如果发生日志服务器更换的情况,不用再一个一个修改客户机的syslog配置文件。

# Log all the mail messages in one place.

mail.*     @loghost

对客户机配置完毕之后,以及需要进行重启。

syslog的函数接口:

#include <syslog.h>

     void openlog(const char *ident, int  option,  int  facil- ity);

          # ident:对哪个进程进行日志记录,为进程名

          # option常用选项:

               LOG_CONS:

               LOG_PID:打印的每一条日志信息包含当前进程的PID

          # facil-ity常用选项:

               LOG_USER:打印的每一条日志信息包含当前用户的等级信息

     void syslog(int priority, const char *format, ...);

          # format:输出日志信息的参数列表,用法类同printf

     void closelog(void);

测试用例:

#include <stdio.h>

#include <syslog.h>

int main(int argc,char* argv[])

{

    openlog(argv[0],LOG_CONS | LOG_PID, LOG_USER);

    int count = 0;

    while(count < 5)

    {

        syslog(LOG_INFO, "%d, log info test ...", count);

        count++;

    }

    closelog();

    return 0;

}

为了同时测试配置文件,在syslog的配置文件中添加一行内容如下:

user.*     /var/log/0.1     # 该文件默认只能在/var/log下,放在其它目录下无效

重启rsyslog服务;

执行原程序,就可以在/var/log/看到0.log文件,打开文件,内容如下:

[root@www ~]# cat /var/log/0.log

Apr  7 23:13:12 www ./test_log[4063]: 0, log info test ...

Apr  7 23:13:12 www ./test_log[4063]: 1, log info test ...

Apr  7 23:13:12 www ./test_log[4063]: 2, log info test ...

Apr  7 23:13:12 www ./test_log[4063]: 3, log info test ...

Apr  7 23:13:12 www ./test_log[4063]: 4, log info test ...

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/14015.html