|
看着chaos的HOWTO setup syslog-ng to log to mysql装成了自己的syslog-ng。这里分享一下。大部分内容引用自HOWTO series.这是原文链接:http://chaos.untouchable.net/index.php/HOWTO_setup_syslog-ng_to_log_to_mysql
准备
需要apache,mysql和php环境
安装
1.运行syslog-ng-3.2beta1-linux-glibc2.3.6-amd64.run
默认是装在opt下,可能会需要安装eventlog。
修改/opt/syslog-ng/etc/syslog-ng.conf ,加上以下内容。
source src {
unix-dgram("/var/run/log");
unix-dgram("/var/run/logpriv" perm(0600));
udp(
ip(0.0.0.0)
port(514)
);
tcp(
ip(0.0.0.0)
port(514)
);
internal();
file("/dev/klog");
};
***按格式把日志内容写到pipe里面
destination d_mysql {
pipe("/tmp/mysql.syslog-ng.pipe"
template("INSERT INTO logs
(host, facility, priority, level, tag, datetime, program, msg)
VALUES ( '$HOST', '$FACILITY', '$PRIORITY', '$LEVEL', '$TAG', '$YEAR-$MONTH-$DAY $HOUR:$MIN:$SEC',
'$PROGRAM', '$MSG' );\n") template-escape(yes));
};
log { source(src); destination(d_mysql); };***
EOF
*******这是一般的syslogng配置格式,包括source,destination,log 3个部分,有兴趣的话还可以加上日志级别的定义:
filter f_debug { level(debug); };(记录debug以上级别的日志)
相应地:log { source(src); filter(f_debug); destination(d_mysql); };
查看是否有pipe
ls -lah /tmp/mysql.syslog-ng.pipe
如果没有的话,创建一个
mkfifo /tmp/mysql.syslog-ng.pipe
2.创建表
phpsyslogng 的dbsetup.sql中缺少指定数据库的语句,你需要先加上这样一句话:USE 你的数据库;
执行
mysql -u root -p |
|