syslog-ng插入操作之前的mysql查询

问题描述 投票:0回答:1

我正在使用syslog-ng来解析我通过csv-parser收到的一些日志。但是,我想在syslog-ng中使用“destination”选项实现比传统插入更复杂的插入操作。目前,我从syslog-ng conf文件到MYSQL的目的地如下所示:

destination d_sql_test
{
sql(
type(mysql)
host('<host>') 
username('<user>')
password('<pass>')
database('<db_name>')
table('test')
columns('col1')
values('${val1}')
);
};

但是,这只是将val1的内容插入到列col1中。我希望能够指定我的插入“逻辑”,如this question中的示例所示。

我不确定实际执行此操作的位置,以及syslog-ng是否支持它

mysql syslog syslog-ng
1个回答
1
投票

如果你能以某种方式在syslog-ng中做出决定,我想你可以做到这一点。

  • 您可以尝试使用in-list() filter来检查用户名是否已列在文件中。如果不是,则可以将日志发送到mysql目标,也可以发送到更新包含用户列表的文件的另一个目标(可能是program()目的地),并重新加载syslog-ng以更新inlist过滤器。
  • 您可以以某种方式实现逻辑的write a syslog-ng template-function in Python,例如,如果应将宏发送到数据库,则将宏设置为1。然后,您可以使用mysql目标在日志路径中为此宏使用过滤器。
  • 或者,如果您可以编写一个单独的目标来完成Python中的工作:Writing syslog-ng destinations in Python

此外,您可能希望在syslog-ng邮件列表中发布此问题,开发人员更容易注意到这一点。

© www.soinside.com 2019 - 2024. All rights reserved.