pgbadger 匹配 RDS 日志的正确模式是什么?

What is the correct pattern for pgbadger to match RDS logs?

我正在尝试使用 pgBadger 解析我的 RDS 实例生成的日志文件,到目前为止没有结果。

log_line_prefix设置为%t:%r:%u@%d:[%p]:

日志文件中的示例行如下所示:

2019-09-24 17:19:25 UTC:172.31.10.173(53224):username@database:[12829]:LOG:  execute <unnamed>: SELECT 1

我正在通过此命令使用 pgbadger:

./pgbadger -p "%t:%r:%u@%d:[%p]:" postgresql.log.2019-09-24-17 -o pgbadger_rdsinstance.html

它抛出以下错误

Unmatched ( in regex; marked by <-- HERE in m/^(?:\d+-\d+-\d+T\d+:\d+:\d+\.\d+Z)?\s*(\d+)-(\d+)-(\d+) (\d+):(\d+):(\d+)\s*[^:]*:( <-- HERE [^\(:]+\(\d+\):([^\@]+)\@([^:]+):\[(\d+)\]:(\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2})(?: [A-Z\+\-\d]{3,6})?:([a-zA-Z0-9\-\.]+|\[local\]|\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}|[0-9a-fA-F:]+)?[\(\d\)]*:([0-9a-zA-Z\_\[\]\-\.]*)@([0-9a-zA-Z\_\[\]\-\.]*):\[(\d+)\]:(LOG|WARNING|ERROR|FATAL|PANIC|DETAIL|STATEMENT|HINT|CONTEXT|LOCATION):\s+(.*)/ at ./pgbadger line 2430.

不确定此处的正确模式应该是什么。看起来它无法解析 172.31.10.173(53224).

我试过像这样转义括号:%t:%r\(%a\):%u@%d:[%p]:,但这没有帮助。

我通过删除这个 (53224) 部分来解析示例日志文件,它工作得很好。

这个前缀的正确模式应该是什么?

如果这是 pgBadger 11.1 或更新版本,您可以尝试使用 --format rds 并删除 --prefix。我想这是一个需要报告的新错误,但至少 --format rds 对我有效。