与反斜杠字符和rsyslog写入Postgres的麻烦
我有rsyslog 4.6.4configuration写邮件日志到PostgreSQL数据库。 它一切正常,直到日志消息包含一个反斜杠,如下例所示: Jun 12 11:37:46 dc5 postfix / smtp [26475]:Vk0nYDKdH3sI:to = <—–@—-.—>,relay = —-.— [—延迟= 1.5,延迟= 0.77 / 0.07 / 0.3 / 0.35,dsn = 4.3.0,status = deferred(host —-.— [ —。—。— .—]说:451 4.3.0写入文件d:\ pmta \ spool \ B \ 00000414时出错,“DATA”中的status = ERROR_DISK_FULL(回复DATA命令)) 以上是写入/var/log/mail.log的日志条目。 它是正确的。 问题在于,发送到以下SQL配方时,文件名中的反斜杠字符将被解释为转义字符: $template dcdb, "SELECT rsyslog_insert(('%timereported:::date-rfc3339%'::TIMESTAMPTZ)::TIMESTAMP,'%msg:::escape-cc%'::TEXT,'%syslogtag%'::VARCHAR)",STDSQL :syslogtag, startswith, "postfix" :ompgsql:/var/run/postgresql,dc,root,;dcdb 因此, rsyslog_insert()存储过程对于msg获取以下值: […]