我想设置一个 rsyslog 来登录数据库。程序名称将具有特定的结构:
某事。{主机名}.{dbname}.{table}
有没有机会将其拆分为我以后可以使用的变量?我的意思是我在指定 INSERT 时需要知道表名。
所以我的问题是我该怎么做?这就是我到目前为止所拥有的:):
# Only if we sent the log
if ($syslogfacility-text == 'local7' and $programname startswith 'something.') then {
#############
# Templates #
#############
# I need something like this but with variables
# $template gw1,"insert into gateway (Message, Facility, FromHost, Priority, DeviceReportedTime, ReceivedAt, InfoUnitID, SysLogTag) values (\'%msg%\', %syslogfacility%, \'%HOSTNAME%\', %syslogpriority%, \'%timereported:::date-mysql%\', \'%timegenerated:::date-mysql%\', %iut%, \'%syslogtag%\')",SQL
# *.* :ommysql:127.0.0.1,Syslog,rsyslog,passwordhere;gw1
}
另一个问题是,如果完成了上述操作,那么如何将 $msg 拆分为动态 SQL?我的意思是,如果我不想在 SQL 脚本中指定列名,只需指定值。不同日志中的值的数量可能不同。
谢谢您的帮助!