1. 从syslog-ng官网下载自己合适的版本,可以是src源文件,也可以是rpm包

2. 安装rpm包,安装后的位置默认为/opt/syslog-ng下

rpm -i syslog-ng-3.1.2-1.rhel5.x86_64.rpm

3. 修改配置文件,vi /opt/syslog-ng/etc/syslog-ng.conf

@version: 3.0

options {
    create_dirs(yes);
    ts_format(bsd);
};

# sources
source s_local {
    # message generated by Syslog-NG
    internal();
    # standard Linux log source (this is the default place for the syslog() function to send logs to)
    unix-stream("/dev/log");
    # messages from the kernel
    file("/proc/kmsg" program_override("kernel: "));
    udp(ip(0.0.0.0) port(514));
};


# destinations
destination d_messages { file("/var/log/messages"); };

log {
    source(s_local);
    destination(d_messages);
};

filter f_login    { program("sso");};
log { source(s_local); filter (f_login); destination(d_login); };
destination d_login { file("/maildata/orilog/login/$YEAR$MONTH$DAY$HOUR$MIN.log" create_dirs(yes) template("$UNIXTIME|$HOST|$LEVEL|$MSG\n") );};

filter f_register { program("register");};
log { source(s_local); filter (f_register); destination(d_register); };
destination d_register { file("/maildata/orilog/register/$YEAR$MONTH$DAY$HOUR$MIN.log" create_dirs(yes));};

4.启动syslog-ng服务

/etc/init.d/syslog-ng start

5. 一些配置项说明

  • source中定义udp(ip(0.0.0.0) port(514)),是监听514的UDP端口,为了接收其它服务器远程打来的syslog
  • program是根据msg的前缀来进行过滤,比如program("sso"),将匹配以sso:开头的msg,注意sso后面必须要有:
  • match是根据msg消息的内容进行过滤,支持正则,比如:match("aaa[|]bbb")
  • template定义自己的syslog日志的输出模板,替换默认的模板,如:template("$UNIXTIME|$HOST|$LEVEL|$MSG\n")
  • destination中还可以将msg转发到其它的syslog服务器上,如:destination d_sso {file("/opt/log/sso/$YEAR$MONTH$DAY.log" );udp("192.168.x.x" port(514));};