这是本节的多页打印视图。 .
版本历史
- 1: pgBadger 13.x 版本记录
- 2: pgBadger 12.x 版本记录
- 3: pgBadger 11.x 版本记录
- 4: pgBadger 10.x 版本记录
- 5: pgBadger 9.x 版本记录
pgBadger 9.x–13.x 的版本历史,按主要版本系列分组,每个系列按从新到旧排序。
这些条目描述的是各版本发布时的行为。历史默认值、配置名称和升级指引可能与 13.2 不同;实际运行设置请以当前命令行参考和 PostgreSQL 日志配置指南为准。
| 系列 | 收录版本 | 首末发布日期 | 页面 |
|---|---|---|---|
| 13.x | 13.0–13.2 | 2024-12-08 – 2025-12-29 | 阅读 13.x |
| 12.x | 12.0–12.4 | 2022-09-13 – 2023-12-25 | 阅读 12.x |
| 11.x | 11.0–11.8 | 2019-06-25 – 2022-04-08 | 阅读 11.x |
| 10.x | 10.0–10.3 | 2018-09-09 – 2019-02-14 | 阅读 10.x |
| 9.x | 9.0–9.2 | 2016-09-02 – 2017-07-27 | 阅读 9.x |
发行归档与附件请访问 GitHub Releases 。
1 - pgBadger 13.x 版本记录
v13.2 · 2025-12-29
这是维护版本,修复了上一版本发布后用户报告的问题,并合入了相关补丁。
- 修复查询归一化无法正确处理配对单引号字符串及其中转义引号的问题。感谢 Bertrand Bourgier 报告。
- 修正文档中的占位符要求。
- 修复未显示错误日志样本的情况。感谢 john doe 报告。
- 修复
!与%s之间可能存在的优先级问题。感谢 Luca Santarelli 和 Philipp Trulson 报告。 - 将 pgFormatter 代码更新到 v5.9。
- 添加 GitHub CI 工作流,在推送提交时运行测试。
- 修复
log_line_prefix中%r占位符的解析。感谢 nike7o0 报告。 - 修复未初始化值的警告。感谢 Ales Zeleny 报告。
- 完善解析 PostgreSQL 日志所用 SSH 选项的文档,并加入示例。感谢 Ulrich Konrad 提供补丁。
- 添加
--ssh-sudo选项,以 sudo 身份执行 SSH 远程命令。感谢 Andrew Jackson 提供补丁。 - 修复
!与字符串eq比较之间可能存在的优先级问题。感谢 Adrien Nayrat 报告。 - 修复 PgBouncer 统计信息的解析。感谢 mrgtt 报告。
v13.1 · 2025-03-16
这是维护版本,修复了上一版本发布后用户报告的问题,并增加了以下功能:
- 添加 vacuum 吞吐量报告,以及按表显示 CPU 耗时最高的 vacuum 的图表。表格报告各表的读取与写入 I/O 耗时,以及 CPU 耗时。感谢 Ales Zeleny 提出需求。此补丁还在“按表统计 vacuum”报告中加入冻结页和冻结元组的信息。
- 添加用于调试的
--no-fork选项,使程序完全不创建子进程。感谢 Ales Zeleny 提出需求。 - 在原始 CSV 输出中加入毫秒。感谢 Henrietta Dombrovskaya 提出需求。
- 处理多个文件时,在样本报告中加入日志文件名。感谢 Adrien Nayrat 提出需求。
完整变更与致谢如下:
- 修复绑定参数的解析。感谢 Thomas Kotzian 提供补丁。
- 对多行查询应用查询过滤条件。感谢 Benjamin Jacobs 提供补丁。
- 更新日志文件名存储方式改变后的测试结果。
- 修复 JSON 输出中的 ERROR 与 LOG 消息级别。感谢 Philippe Viegas 报告。
- 移除从
File::Temp导入其未导出的tmpdir方法的代码。感谢 kmoradha 报告。
v13.0 · 2024-12-08
这是主要版本,修复了上一版本发布后用户报告的问题,并增加了以下功能:
- 添加两个选项,用于自定义查询和会话直方图的分组边界:
--histogram-query VAL:查询耗时直方图的边界,默认值(毫秒)为0,1,5,10,25,50,100,500,1000,10000。--histogram-session VAL:会话耗时直方图的边界,默认值(毫秒)为0,500,1000,30000,60000,600000,1800000,3600000,28800000。 感谢 JosefMachytkaNetApp 提出需求。 - 支持 CSV 和 JSON 日志格式中的 auto_explain 执行计划。感谢 zxwsbg 和 Alexander Rumyantsev 报告。
- 将此前未作为事件报告的三类 LOG 消息加入事件报告:
unexpected EOF、incomplete startup packet和detected deadlock while waiting for。感谢 dottle 报告。
向后兼容性问题:
- 改变“事件”报告中 LOG 级别事件的存储方式。此前其中一些事件仍作为错误报告和计数,而未作为 LOG 级别记录处理。现在将它们存储并报告为 EVENTLOG,以区别于查询。这项改动会破坏增量模式的向后兼容性;升级当周的报告会同时包含新旧两种处理方式。感谢 Matti Linnanvuori 报告。
缺陷修复:
- 修复未报告因
statement_timeout导致最多取消的查询的问题。 - 更新回归测试。
- 修复从 CSV 日志提取执行计划后的格式化。
- 修复 jsonlog 缺失的 autovacuum 数据报告:平均 autovacuum 耗时、各表移除的元组数,以及 autovacuum 活动报告中按小时统计的 vacuum 次数。感谢 Ales Zeleny 提供补丁。
- 修复孤立日志行未关联到耗时 bind 查询的问题。感谢 Henrietta Dombrovskaya 报告。修复模式匹配中使用未初始化值的问题。感谢 Junior Dias 提供补丁。
- 将
--csv-separator选项应用到原始 CSV 导出。此版本记录中的默认分隔符为分号(;)。感谢 Henrietta Dombrovskaya 提出需求。 - 原始 CSV 输出中,参数和应用名称为空时不再添加双引号。
- 原始 CSV 输出中,查询包含分号时添加双引号。感谢 Henrietta Dombrovskaya 报告。
2 - pgBadger 12.x 版本记录
v12.4 · 2023-12-25
这是维护版本,修复了上一版本发布后用户报告的问题。
- 修复 PgBouncer 1.21 的报告。感谢 Ales Zeleny 提供补丁。
- 防止按文件并行处理的进程数超过文件数。感谢 maliangzhu 报告。
- 修复自 v12.3 起损坏的回归测试。感谢 ieshin 报告。
- 修复 LOG 记录被计入 ERROR 级别记录的情况。感谢 Matti Linnanvuori 报告。
v12.3 · 2023-11-27
这是维护版本,修复了上一版本发布后用户报告的问题,并增加了以下功能:
- 添加
--include-pid选项,只报告指定会话 PID(%p)的事件,可多次指定。感谢 Henrietta Dombrovskaya 提出需求。 - 添加
--include-session选项,只报告指定会话 ID(%c)的事件,可多次指定。感谢 Henrietta Dombrovskaya 提出需求。 - 添加
--dump-raw-csv选项,只解析日志并将信息导出为 CSV,不再进一步处理,也不生成报告。感谢 Henrietta Dombrovskaya 提出需求。
完整变更与致谢如下:
- 将 pgFormatter 更新到 5.5。
- 修复 jsonlog 格式的解析结束日期。感谢 jw1u1 报告。
- 修正“按应用统计会话”标签中的拼写错误。感谢 fairyfar 提供补丁。
- 修复 INSERT/UPDATE/DELETE 流量图表的缺陷。感谢 fairyfar 提供补丁。
- 修复 bind 查询中孤立日志行的解析。感谢 youxq 报告。
- 修复新版 PostgreSQL 的按表统计 analyze 报告。感谢 Jean-Christophe Arnu 提供补丁。
- 修复 syslog 时间戳包含毫秒时的记录解析。感谢 Pavel Rabel 报告。
v12.2 · 2023-08-20
这是维护版本,修复了上一版本发布后用户报告的问题,并增加了两个功能:
- 支持 autovacuum 耗时的最大值、平均值和最小值。感谢 Francisco Reinolds 提供补丁。
- 支持 PgBouncer 的平均等待时间。感谢 Francisco Reinolds 提供补丁。
完整变更与致谢如下:
- 修复应用名称包含
<...>时损坏的 HTML 输出。感谢 Fabio Geiss 报告。 - 修复按数据库过滤时孤立日志行关联错误的问题。感谢 jcasanov 报告。
- 修复 logplex 前缀的解析。
- 修复 logplex 孤立日志行的检测。
- 修复
autovacuum的system usage: CPU: ...行解析。感谢 Francisco Reinolds 提供补丁。 - 输出到标准输出时,不再添加输出目录前缀。
- 统一“平均查询耗时”标签。感谢 Francisco Reinolds 提供补丁。
- 更新新增 pgBadger 选项的文档。感谢 Francisco Reinolds 提供补丁。
- 修复无法打开任何文件句柄时未中止解析的情况。感谢 vp 报告。
- 在帮助中补入
%p/%t必需占位符的日志要求。感谢 Christophe Courtois 提供补丁。 - 修复
--retention参数。感谢 Bertrand Bourgier 提供补丁。 - 修复设置 HTML 输出目录时,提交
0e5c7d5移除的输出目录清理功能。感谢 Bertrand Bourgier 报告。 - 修复目标目录包含需要在正则表达式中转义的字符时的输出扩展名。感谢 Bertrand Bourgier 提供补丁。
- 在 Windows 移植版中,用
localtime调用替换POSIX::strftime("%s", ....)。感谢 Bertrand Bourgier 提供补丁。 - 修复 HTML 输出目录的清理。感谢 Bertrand Bourgier 提供补丁。
- 默认使用 HTTPS 执行计划 URL。感谢 Philipp Trulson 提供补丁。
v12.1 · 2023-03-20
这是维护版本,修复了过去六个月用户报告的问题。
完整变更与致谢如下:
- 修复多行参数的解析。感谢 Bekir Niyaz 报告。
- 修复包含
::tsrange的查询无法归一化的问题。感谢 Philippe Griboval 报告。 - 在事件报告中加入逻辑解码一致性点与复制槽启动的日志记录。
- 处理时间戳中其他纳秒加时区的格式。感谢 Ronan Dunklau 报告。
- 修复使用 T 分隔日期和时间时的
%m检测。感谢 Ronan Dunklau 报告。 - 添加对 CloudNativePG 生成日志的解析。感谢 codrut panea 提供补丁。
- 修复生成报告时
--outdir选项未生效的问题。感谢 Frederic Guiet 报告。 - 根据最近的文档改动更新 README。感谢 Manisankar 报告。
- 修正 pgBadger 示例中的拼写错误。感谢 Shinichi Hashiba 提供补丁。
v12.0 · 2022-09-13
这个主要版本修复了过去五个月用户报告的一些问题,并增加了新功能和改进:
- 移除 Tsung 输出支持。
- 改善需要替换数百个绑定参数时的性能。
- 移除
-n | --nohighlight选项;升级到 pgFormatter 4 后已不再使用该选项。 - 使用 POST 方法向 explain.depesz.com 提交 auto_explain 执行计划,避免 GET 参数长度限制。
- 将
--exclude-query和--include-query应用于 bind/parse 记录。 - 在文档中添加 pgBadger 报告示例的链接。
完整变更与致谢如下:
- 修复月报因
log file ... must exists报错而生成失败的问题。感谢 Jaume Sabater 报告。 - 修复从标准输入读取 PgBouncer 日志时的解析启动调试消息。感谢 aleszeleny 报告。
- 移除 Tsung 输出支持。
- 大幅改善绑定参数替换的性能;数百个参数曾可能导致程序无限运行。感谢 Monty Mobile 报告。
- 修正返回码文档,并修复部分位置的错误返回码。感谢 Jaume Sabater 报告。
- 修正多处拼写错误。感谢 David Gilman 提供补丁。
- 移除升级到 pgFormatter 4 后不再使用的
-n | --nohighlight选项。感谢 Elena Indrupskaya 报告。 - 修复多处文档问题。感谢 Postgres Pro 的 Elena Indrupskay 提供补丁。
- 允许
--log-timezone和--timezone使用半小时时差,值可以是整数(例如 2)或小数(例如 2.5)。感谢 Mujjamil-K 提出需求。 - 允许
--exclude-app和--exclude-client使用正则表达式。感谢 rdnkrkmz 提出需求。 - 配合上一项相关提交允许使用
--explain-url,并恢复只支持文本格式执行计划的限制。 - 使用 POST 方法向 explain.depesz.com 提交 auto_explain 执行计划,避免 GET 参数长度限制。感谢 hvisage 报告。
- 将
--exclude-query和--include-query应用于 bind/parse 记录。感谢 Alec Lazarescu 报告。 - 修复 RDS 日志中 autovacuum 统计信息的解析。感谢 David Gilman 报告。
- 修复解析远程日志时日志格式的传递。感谢 spookypeanut 报告。
- 在文档中添加 pgBadger 报告示例的链接。
- 修复按用户统计会话的报告。感谢 vitalca 报告。
- 修复 PostgreSQL 15 输出的 jsonlog 解析。
- 修复文本格式的错误/事件报告。感谢 Michael Banck 提供补丁。
- 修正
normalize_error()中正则表达式的拼写错误。感谢 Michael Banck 提供补丁。
3 - pgBadger 11.x 版本记录
v11.8 · 2022-04-08
本版本修复了过去三个月用户报告的问题,尤其包括增量模式中检测新日志记录的两项修复:
- 修复
log_line_prefix使用毫秒时间戳(%m)或纪元时间戳(%n)时的新记录检测。 - 修复未使用多进程时本地文件的新记录检测。
完整变更与致谢如下:
- 全面审查并简化日志文件变化的检测。
- 在事件报告中加入
could not (receive|send) data (from|to) client消息。感谢 Adrien Nayrat 报告。 - 修复预备查询名称包含
:时的解析问题。感谢 aleszeleny 报告。 - 修复使用毫秒(
%m)或纪元(%n)时间戳时的新记录检测。感谢 aleszeleny 报告。 - 修复未使用多进程时本地文件的新记录检测。感谢 aleszeleny 报告。
- 修复通过 SSH 读取远程文件时的新记录检测。感谢 Luca Ferrari 报告。
- 修复“按用户统计连接”报告中用户名混入无关内容的问题。感谢 caseyandgina 报告。
- 修复使用 URI 时 SSH 命令缺少连接选项的问题。感谢 Luca Ferrari 报告。
- 处理查询 ID 占位符
%Q。感谢 Adrien Nayrat 提供补丁。 - 修正错误消息中的拼写错误。感谢 Luca Ferrari 提供补丁。
- 在事件报告中加入
server process was terminated by signal消息。感谢 Avi Vallarapu 报告。 - 文档:修正每周增量命令中的文件名。感谢 Theophile Helleboid 提供补丁。
t/04_advanced.t:修复 syslog 测试。感谢 Christoph Berg 提供补丁。
v11.7 · 2022-01-23
本版本修复了过去五个月用户报告的问题,并作出以下改进:
- 添加
--no-progressbar选项,隐藏进度条,同时保留其他输出。 - 添加
--day-report选项,重建指定日期的 HTML 报告。它与--month-report类似,但仅处理一天;需要增量输出目录及全部必要的二进制数据文件,日期格式为YYYY-MM-DD。 - 改善 Heroku logplex 和 Cloud SQL JSON 日志的解析。
完整变更与致谢如下:
- 更新贡献指南和
Makefile.PL,改善一致性、说明清晰度与依赖管理。感谢 diffuse 提供补丁。 - 修复二进制模式下最后解析状态文件(
--last-parsed)的使用。感谢 wibrt 报告。 - 为
--last-parsed添加回归测试,并修复仅报告临时文件时的回归测试。 - 修正按主机统计会话图表的标题。感谢 Norbert Bede 报告。
- 修复同时启用
--iso-week-number和--incremental时生成周报的周编号。感谢 hansgv 报告。 - 添加
--no-progressbar选项,隐藏进度条,同时保留其他输出。感谢 seidlmic 提出需求。 - 防止调试模式对多行 jsonlog 打印过多格式未知的日志行。
- 修复单行 Cloud SQL JSON 日志的解析。感谢 Thomas Leclaire 报告。
- 修复只启用
log_temp_files时的临时文件汇总。 - 即使使用
-q或--quiet,指定-v后仍打印调试消息。 - 修复 jsonlog 文件的自动识别。
- 修复 Cloud SQL 日志文件的解析。感谢 Luc Lamarle 报告。
- 修复
parse_json_input中的 PID 提取。感谢 Francois Scala 提供补丁。 - 添加
--day-report选项,接受YYYY-MM-DD日期并重建该日的 HTML 报告。感谢 Thomas Leclaire 提出需求。 - 修复进度条中的查询计数。感谢 Guillaume Lelarge 报告。
- 修复耗时最高的 bind 和 prepare 报告存储了不完整查询的问题。
- 修复对象标识符的归一化,避免某些情况下把其中数字替换成
?。 - 修复以注释开头的归一化查询未格式化的问题。
- 修复使用
--dbname时 stderr 格式的多行处理。感谢 Guillaume Lelarge 报告。 - 修复增量模式使用
--dbname时未生成报告的问题。感谢 Dudley Perkins 报告。 - 二进制文件不兼容时不再终止程序,而是继续下一个文件。感谢 Thomas Leclaire 建议。
- 修复解析器对 Heroku logplex 格式变化的处理。感谢 François Pietka 报告。
v11.6 · 2021-09-04
本版本修复了过去七个月用户报告的问题,并作出以下改进:
- 检测 PostgreSQL 14 新增的
log_line_prefix查询 ID。感谢 Florent Jardin 报告。 - 添加覆盖数据库排除和按数据库拆分报告的高级回归测试。感谢 MigOps Inc 提供补丁。
- 使用
--explode时,以多进程生成报告。感谢 MigOps Inc 提供补丁,以及 Thomas Leclaire 提出需求。 - 添加
--iso-week-number:增量日历每周从周一开始,遵循 ISO 8601,周编号范围为 01 至 53,第 1 周是新年中至少含 4 天的第一周。感谢 Alex Muntada 提出需求。 - 添加
--keep-comments选项,保留归一化查询中的注释,以区分归一化结果相同的查询。感谢 Stefan Corneliu Petrea 提出需求。 - 跳过第三方软件写入 PostgreSQL 日志的 INFO 行。感谢 David Piscitelli 报告。
- 兼容 PostgresPro 日志,其语句耗时后附有行数与字节大小。感谢 panatamann 报告。
- 解析包含 T 的时间表示,以支持 journalctl 时间戳。感谢 Graham Christensen 提供补丁。
- 改善 Windows 移植版。感谢 Bertrand Bourgier 提供补丁。
重要说明:
- 当时计划在下一个主要版本中默认启用
--iso-week-number,并移除--start-monday,使每周始终从周一开始;为简化代码,也计划移除以周日作为每周起始日的选项。此条记录的是当时的计划,当前选项请以命令行参考为准。
完整变更与致谢如下:
- 修复重复的警告消息
database ... must be vacuumed within ... transactions。感谢 Christophe Courtois 报告。 - 修复使用未初始化变量的问题。感谢 phiresky 报告。
- 改善查询 ID 的检测,支持负值,并从 csvlog 中读取。
- 修复增量模式总是再次解析已经处理过的最后一个文件的问题。感谢 Thomas Leclaire 报告。
- 更新 syslog 格式的正则表达式,支持会话行标记只含一个整数的情况,而不要求两个以连字符分隔的整数。感谢 Timothy Alexander 提供补丁。
- 修复 JSON 日志使用
--exclude-db后仍生成被排除数据库报告的问题。感谢 MigOps Inc 提供补丁,以及 Thomas Leclaire 报告。 - 针对有缺陷的 Storable 版本添加回归测试。
- 修复增量模式生成周报时替换迭代器使用未初始化值的问题。感谢 Thomas Leclaire、Michael Vitale、Sumeet Shukla 和 Stefan Corneliu Petrea 报告。
- 添加
g标志,以替换全部绑定参数。感谢 Nicolas Lutic 和 Sebastien Lardiere 提供补丁。 - 改善文档。感谢 Stefan Petrea 提供补丁。
- 修复日志时区变换的计算。感谢 Stefan Petrea 提供补丁。
- 修复按起止时间过滤日志。
- 修复按数据库过滤多行查询时孤立日志行关联错误的问题。感谢 Abhishek Mehta 报告。
- 修复增量模式同时使用
--dbname与拆分选项-E时数据库参数被部分忽略的问题。感谢 lrevest 报告。 - 更新 JavaScript 资源。
- 修复缩小屏幕后切换为折叠菜单前的菜单显示。感谢 Guillaume Lelarge 报告。
- 修复未正确支持跨多行绑定参数值的问题。
- 将上一补丁对应的修复同步到 pgFormatter。
- 修复 pgFormatter 代码中替换迭代器使用未初始化值的另一处问题。感谢 Christophe Courtois 报告。
- 修复查询归一化。感谢 Jeffrey Beale 提供补丁。
- 使用
--dump-all-queries时,确保每条语句都以分号结尾。感谢 Christian 报告。 - 修正拼写,并修复多个日志文件的行结束符类型初始化。
- 自动检测行结束符类型,修复 Windows 双字节行结束符导致的 LAST_PARSED 偏移问题。感谢 Bertrand Bourgier 提供补丁。
- 修复 Windows 不支持
strftime %u时的get_day_of_week()移植问题。感谢 Bertrand Bourgier 提供补丁。 - 修复 Windows 调用 Perl 工具
pl2bat.bat时,因 pgBadger 读取__DATA__的方式导致生成损坏的pgbadger.bat。感谢 Bertrand Bourgier 提供补丁。 - 修复起止时间过滤,并添加时间戳过滤的回归测试。感谢 Alexis Lahouze 和 plmayekar 报告。
- 修复 pgFormatter 更新引入的模式匹配使用未初始化值问题。感谢 arlt 报告。
v11.5 · 2021-02-18
本版本修复了过去三个月用户报告的问题,并作出以下改进:
- 添加会话闲置时间报告,计算方式为:
“(total sessions time - total queries time) / number of sessions”
要得到可靠结果,需启用
log_connections与log_disconnections,并设置log_min_duration_statement = 0以记录全部查询。该报告可帮助了解闲置时间,并评估事务模式连接池的价值。报告位于“全局统计”的“会话”标签页,以及“总体活动”的“会话”标签页(按小时统计)。 - 添加数值匿名化,将数字替换为四位随机数。
- 将 SQL 格式化器更新为基于 pgFormatter 5.0 的版本。
完整变更与致谢如下:
- 修复 Cloud SQL 多行语句的解析。感谢 Jon Young 报告。
- 为匿名化添加回归测试。
- 修复 maxlength 截断导致匿名化失效的问题。感谢 artl 报告。
- 在耗时最高的 prepare 和 bind 报告中匿名化参数。感谢 arlt 报告。
- 支持 logplex 日志前缀中的微秒。感谢 Ross Gardiner 报告。
- 添加会话闲置时间报告。感谢 Guillaume Lelarge 提出需求。
- 完成支持 jsonlog 多行内容的补丁。
v11.4 · 2020-11-24
本版本修复了过去四个月用户报告的问题,改善 PostgreSQL 13 日志信息的支持,并增加以下功能:
- 在“按表统计 vacuum”报告中添加完整的 autovacuum 信息:缓冲区使用(命中、未命中、弄脏)、因页被固定而跳过、跳过的冻结页,以及 WAL 使用(记录数、全页镜像、字节数)。“各表移除的元组”报告加入剩余元组、尚不能移除的元组和剩余页数。这些信息只在“表”标签页提供。
- 添加检查点启动原因的分布报告。
- 从连接授权日志中检测应用名称。
完整变更与致谢如下:
- 修正错误消息中的拼写错误。感谢 Vidar Tyldum 提供补丁。
- 修复 Windows 上的
can not load incompatible binary data错误。感谢 Eric Brawner 报告。 - 修正用法说明和文档中
--html-outdir的拼写错误。感谢 Vidar Tyldum 提供补丁。 - 修复 jsonlog/Cloud SQL 格式的自动识别。感谢 Jon Young 报告。
- 修复 PostgreSQL v13 的 CSV 日志解析。感谢 Kanwei Li 报告,以及 Kaarel Moppel 提供补丁。
- 修复产生最多临时文件的查询报告的排序。感谢 Sebastien Lardiere 报告。
- 在调试模式中显示 pgBadger 版本。
v11.3 · 2020-07-26
本版本修复了过去四个月用户报告的问题,并增加了以下功能和命令行选项:
- 自动检测 UTC 时间戳,避免向图表再次应用时区偏移。
- 支持 GCP Cloud SQL JSON 日志格式。
- 添加
--dump-all-queries,将全部查询导出到文本文件,不生成报告,只列出 PostgreSQL 日志中的完整语句列表。绑定参数会填入查询中相应位置。 - 添加
-Q | --query-numbering,在使用--dump-all-queries或--normalized-only时为输出查询编号。 - 添加
--tempdir,指定临时文件目录,适合不允许写入/tmp的系统。 - 添加
--ssh-port,指定非默认 22 的 SSH 端口。URI 写法也支持指定端口,例如: ssh://192.168.1.100:2222//var/log/postgresql-11.log
完整变更与致谢如下:
- 修复 jsonlog/Cloud SQL 格式的增量报告。感谢 Ryan DeShone 报告。
- 自动检测 UTC 时间戳,避免应用自动检测的时区偏移;UTC 时间由 JavaScript 转换为本地时区。感谢 Brett Stauner 报告。
- 修复 journalctl 日志从第二次运行起增量解析失效的问题。感谢 Paweł Koziol 提供补丁。
- 修复同时使用
-X与-E时的资源文件路径。感谢 Ryan DeShone 报告。 - 修复“总体活动”报告的读写查询。感谢 alexandre-sk5 报告。
- 未使用并行模式时添加调试消息。
- 修复文件大小检测中的 elsif 逻辑,以及添加
--since后 journalctl 命令多余的空格。感谢 Pawel Koziol 提供补丁。 - 修复
not a valid file descriptor错误。感谢 Pawel Koziol 报告。 - 修复 RDS 文件的增量模式。感谢 Ildefonso Camargo、nodje 和 John Walsh 报告。
- 添加
-Q | --query-numbering,在使用--dump-all-queries或--normalized-only时为查询编号,便于外部脚本从输出文件提取多行查询。感谢 Shantanu Oak 提出需求。 - 修复启用
log_min_duration_statement时 Cloud SQL JSON 日志的解析。感谢 alexandre-sk5 报告。 - 修复 RDS 日志中用户的错误哈希键。感谢 vosmax 报告。
- 修复修改不可创建数组值导致的错误。感谢 John Walsh 和 Mark Fletcher 报告。
- 支持 GCP Cloud SQL JSON 日志,日志格式(
-f)为jsonlog。感谢 Thomas Poindessous 提出需求。 - 添加
--dump-all-queries,将全部查询导出到文本文件,不生成报告;绑定参数填入相应位置,不对查询去重或排序,记录全部查询。感谢 Shantanu Oak 提出需求。 - 添加
--dump-all-queries文档。 - 修复新版 PostgreSQL 的 vacuum 报告。感谢 Alexey Timanovsky 报告。
- 添加
--no-process-info,不再修改进程标题以标识 pgBadger 进程,适用于不支持该操作的系统。感谢 Akshay2378 报告。 - 添加
--tempdir,指定临时文件目录,默认: File::Spec->tmpdir() || ‘/tmp’ 适合不允许写入/tmp的系统。感谢 Akshay2378 报告。 - 修复压缩文件名含空格或方括号时不受支持的问题。感谢 Alexey Timanovsky 报告。
- 添加
--ssh-port,指定非默认 22 的 SSH 端口。URI 写法也支持指定端口,例如: ssh://192.168.1.100:2222//var/log/postgresql-11.log 感谢 Augusto Murri 提出需求。
v11.2 · 2020-03-11
本版本修复了过去六个月用户报告的问题,并增加以下功能:
-
支持并自动识别 AWS Redshift 日志格式。
-
支持 PgBouncer 1.11 的新日志格式。
-
支持 zstd 与 lz4 压缩格式。
-
增量模式下可完全分离统计数据生成与 HTML 报告生成,生成报告时无需重新读取日志。例如,可以每小时运行:
pgbadger -I -O "/out-dir/data" --noreport /var/log/postgresql*.log这只在
/out-dir/data创建二进制数据文件。随后可每晚在独立目录/out-dir/reports生成当天的报告,供次日查看:pgbadger -I -l "/out-dir/data/LAST_PARSED" -H "/out-dir/reports" /out-dir/data/2020/02/19/*.bin需要指定最后解析状态的路径、HTML 输出目录,以及当天的二进制数据文件。
新增命令行选项:
-
添加
--explain-url,覆盖图形化执行计划工具的 URL。当时的默认 URL 为:http://explain.depesz.com/?is_public=0&is_anon=0&plan=可用于本地安装的 PgExplain 或其他工具。pgBadger 将转义后的文本格式执行计划追加到 URL 末尾。
-
添加
--no-week,增量模式下不生成周报,适合周报消耗过多时间和资源的情况。 -
添加
--command,指定获取日志记录的命令。pgBadger 打开通向该命令的管道,并解析其输出的日志,例如:pgbadger -f stderr –command ‘cat /var/log/postgresql.log’
这与直接将日志文件作为参数传入等效。需要实时改写日志、从程序提取日志或从数据库生成日志时,此选项尤为有用。例如:
pgbadger -f csv –command ‘psql dbname -c “COPY jrn_log TO STDOUT (FORMAT CSV)”’
-
添加
--noexplain,不解析或报告 auto_explain 扩展写入日志的执行计划。在 PostgreSQL < 9.0 中,日志包含执行计划时 pgBadger 会生成损坏的报告,此选项可避免该问题。
向后兼容性:
- 默认将查询截断至 100000 字符;可通过
--maxlength调整这个人为设定的值。此前默认不截断,可能造成过量资源消耗。限定默认长度更安全,且多数查询不会触及此限制。不过,超过 25000 字符的查询不会进行格式化。
完整变更与致谢如下:
- 修复
--exclude-client不生效的问题。感谢 John Walsh 报告。 - 添加 RDS 日志解析与
--exclude-client的回归测试。 - 修复 PgBouncer 日志的进度条,将“查询”标签改为“统计”。
- 添加
--explain-url,覆盖图形化执行计划工具的 URL。感谢 Christophe Courtois 提出需求。 - 支持 PgBouncer 1.11 新日志格式。感谢 Dan Aksenov 报告。
- 支持 zstd 和 lz4 压缩格式。感谢 Adrien Nayrat 提供补丁。
- 支持并自动识别 AWS Redshift 日志格式。感谢 Bhuvanesh 提出需求。
- 更新 Redshift 日志格式文档。
- 添加
--no-week,增量模式下不生成周报。感谢 cleverKermit17 提出需求。 - 修复 Windows 上文件路径模式匹配导致 pgBadger 失败的问题。
- 修复 #554:即使指定字符集,西里尔字符及其他编码的语句参数也未在 HTML 中正确显示。该回归由修复 Perl 的
Wide character in print消息引入;现已撤销原补丁,添加--wide-char以恢复所需行为。遇到此消息时请加入该选项。添加西里尔字符和法语编码的回归测试。感谢 4815162342lost 和 yethee 报告。 - 更新文档,说明
lc_messages = 'en_US.UTF-8'同样有效。感谢 nodje 报告。 - 更新
--maxlength文档,默认截断长度改为 100000,不再默认不截断。感谢 nodje 报告。 - 修复跨年时的保留期计算。感谢 Fabio Pereira 提供补丁。
- 修复 RDS 日志格式的解析。感谢 Kadaffy Talavera 报告。
- 增量模式下没有新日志记录时,不再生成空索引文件。感谢 Kadaffy Talavera 报告。
- 修复未及时更新的文档。感谢 Eric Hanson 提供补丁。
- 将文档中的命令行参数从
-no-explain改为-noexplain。感谢 Indrek Toom 提供补丁。 - 无法取得 totalsize 时,回退到默认文件大小。感谢 Adrien Nayrat 提供补丁。
- 修正示例中的日期。感谢 Greg Clough 提供补丁。
- 在其余测试中使用压缩文件扩展名的正则表达式,并将
.bin扩展名的判断独立处理。 - 支持 zstd 和 lz4 压缩格式。感谢 Adrien Nayrat 提供补丁。
- 修复 Windows 上剩余的 SIGUSR2 调用。感谢 inrap 报告。
- 修复大小不确定的日志文件的进度条。
- 添加
--command,执行命令并从其标准输出获取日志记录。感谢 Justin Pryzby 提出需求。 - 添加
--noexplain,不解析或报告 auto_explain 写入日志的执行计划,以避免 PostgreSQL < 9.0 中日志包含执行计划时报告损坏。感谢 Massimo Sala 提出需求。 - 修复命令行指定前缀时的 RDS 日志解析。感谢 Bing Zhao 报告。
- 修复 RDS 日志格式的增量模式。感谢 Bing Zhao 报告。
- 修复 RDS 日志解析中的潜在问题。感谢 James van Lommel 和 Simon Dobner 报告。
- 修复语句分类,并添加回归测试。感谢 alexanderlaw 报告。
- 修复 IN 子句中单个字符的匿名化。感谢 Massimo Sala 报告。
- 修复缺少客户端/用户/数据库信息的 RDS 日志行解析。感谢 Konrad 报告。
v11.1 · 2019-09-16
本版本修复了过去三个月用户报告的问题,并增加以下功能和报告:
- 添加 prepare 或 parse 阶段耗时最高的前 N 条查询报告。
- 添加 bind 阶段耗时最高的前 N 条查询报告。
- 添加 prepare/bind/execute 各阶段耗时报告,位于“全局统计”新增的“耗时”标签页。例如: Total query duration: 6m16s Prepare/parse total duration: 45s564ms Bind total duration: 4m46s Execute total duration: 44s71m 这也修复了原“查询总耗时”只报告 execute 总耗时的问题。
- 支持并自动识别 RDS 与 CloudWatch 日志格式;无法自动识别时可使用
-f rds。 - 添加
--month-report,生成月度增量报告。 - 恢复 Windows 操作系统支持。
其他缺陷修复与功能改进:
- 使用 pod2markdown 自动生成
README.md;命令不存在时不生成该文件。感谢 Derek Yang 提供补丁。 - 将 WITH 语句归类为 CTE,修复上一版本引入的回归。
- 修复 Windows 操作系统支持。
- 支持 RDS 和 CloudWatch 日志;无法自动识别时使用
-f rds。感谢 peruuparkar 提出需求。 - 修复
-f | --format未应用于全部参数文件的问题:当自动识别失败时,曾错误沿用第一个文件的格式。感谢 Levente Birta 报告。 - 更新源码文档,将 pgBadger v7.x 引用改为 v11。感谢 Will Buckner 提供补丁。
- 限制高频/耗时查询的显示高度,避免巨大查询占满页面。感谢 ilias ilisepe1 提供补丁。
- 修复“最慢的单次查询”中查询与详细信息溢出的问题。
- 修复文件、目录与通配符的 SSH URI。感谢 tbussmann 提供补丁。
- 修正文档中的 URI 示例。感谢 tbussmann 提供补丁。
- 使用
--rebuild时隐藏默认输出文件的提示。 - 在
usage()输出中添加额外换行,避免构建时破坏 POD 文档。 - 在文档中恢复
--exclude-client的说明。感谢 Christoph Berg 报告。
v11.0 · 2019-06-25
本版本加入重要新功能,并修复了过去四个月用户报告的问题。新增功能:
-
将游标相关查询(DECLARE、CLOSE、FETCH、MOVE)归入新查询类型 CURSOR。
-
添加生成最多临时文件的 bind 查询报告;需要启用连接与断开连接日志。
-
添加
--exclude-client,排除指定客户端 IP 的日志记录,可多次指定。 -
允许
--begin与--end只使用时间。 -
添加
-H, --html-dir,在增量模式下指定独立的 HTML 输出路径;二进制文件仍保存在-O, --outdir指定的目录。 -
添加
-E | --explode,将主报告拆分为每个数据库一份;与数据库无关的全局信息放入 postgres 数据库报告。 -
增量模式支持按数据库报告,每个数据库有独立子目录与增量报告。
-
支持 Heroku PostgreSQL 的 logplex 格式,可这样解析:
heroku logs -p postgres | pgbadger -f logplex -o heroku.html -
-
查询超过 10Kb 时,先将所有常量字符串参数限制为 30 字符,再将查询截断为 10Kb,避免插入 bytea 等超长查询造成耗时过多或挂起。10Kb 限制可通过
--maxlength控制;先尝试缩短参数,再归一化查询或按 maxlength 截断。
此版本与旧二进制或 JSON 文件不兼容,增量模式也无法读取旧二进制文件。若升级后仍需保留历史报告,请在新的一周开始时升级,否则周报会损坏。pgBadger 将打印警告并跳过旧二进制文件。
其他缺陷修复与功能改进:
- 加入版本警告,并跳过不兼容的二进制文件。
- 将代码格式化器更新至 pgFormatter 4.0。
- 修复 pgBadger 在 Windows 上挂起的问题。感谢 JMLessard 报告。
- 更新
tools/pgbadger_tools,兼容 v11 的新二进制文件格式。 - 添加生成最多临时文件的 bind 查询报告;只有在 postgresql.conf 中启用连接与断开连接日志时才能收集。感谢 Ildefonso Camargo 提出需求。
- 修复时区自动检测。感谢 massimosala 修复。
- 使用
--nograph时移除剩余图表。 - 使用
--normalized-only时强制使用.txt扩展名。 - 修复 logplex 格式的 autovacuum/autoanalyze 报告。感谢 Konrad zichul 报告。
- 修复 Windows 的进度条。感谢 JMLessard 报告。
- 使用
$prefix_vars{'t_time'}存储日志时间。感谢 Luca Ferrari 提供补丁。 - 更新用法与文档,移除 pgBadger 调用前的 perl 命令。感谢 Luca Ferrari 提供补丁。
- 允许起止条件使用不含日期的时间。感谢 Luca Ferrari 提供补丁。
- 修正 README 的少量拼写与语法错误。感谢 ofni yratilim 提供补丁。
- 修复通过 SSH 使用的远程路径。感谢 Luca Ferrari 提供补丁。
- 更新回归测试,适应按数据库报告功能引入的新结构。
- 修复全部起止参数中的小数秒。感谢 Luca Ferrari 提供补丁。
- 修正文档 URL。感谢 Kara Mansel 报告。
- 修复 auto_explain 解析,并补充
-U可多次指定的说明。感谢 Douglas J Hunley 报告。 - 改进多处 HTML/CSS 报告界面。感谢 Pierre Giraud 提供补丁。
- 更新资源文件。
- 添加 logplex 格式的回归测试。
- 支持 Heroku PostgreSQL 的 logplex 格式,可解析日志流:
heroku logs -p postgres | pgbadger -f logplex -o heroku.html -
或已保存的日志文件:
pgbadger heroku.log
logplex 与其他支持的格式一样可自动识别。pgBadger 支持以下默认
log_line_prefix: database = %d connection_source = %r sql_error_code = %e 或简化形式: sql_error_code = %e 如有其他默认前缀,可向上游反馈。也可以始终用-p | --prefix指定,例如: pgbadger –p ‘base = %d source = %r sql_state = %e’ heroku.log 感谢 Anthony Sosso 提出需求。 - 修复关于 URI 使用的帮助信息。
- 修复上一补丁导致 SSH URI 通配符失效的问题。感谢 Tobias Bussmann 报告。
- 允许日志路径含空格的 URI。感谢 Tobias Bussmann 报告。
- 修正文档中的 URI 示例。感谢 Tobias Bussmann 提供补丁。
- 修复
t/02_basics.t,避免 syslog 测试耗时超过 10s 时失败。感谢 Christoph Berg 提供补丁。
4 - pgBadger 10.x 版本记录
v10.3 · 2019-02-14
这是维护版本,修复了用户报告的日志格式自动识别问题,以及另一处 PgBouncer 日志解析问题。同时添加一项功能:
-o | --outfile 现在可多次指定,使单条命令输出多种格式。例如:
pgbadger -o out.html -o out.json /log/pgsql-11.log
将生成 HTML 与 JSON 两份报告,分别保存到对应文件。
其他缺陷修复与功能改进:
- 修复指定数据库、用户、客户端或应用过滤条件时,部分查询未出现在统计报告中的问题。
- 修复 PostgreSQL >= 10 默认日志行前缀的自动识别。
- 修复非标准日志行前缀的格式自动识别;
--prefix包含%t、%m或%n,以及%p或%c时,将格式设为 stderr。感谢 Alex Danvy 报告。 - 移除行尾多余空格。
- 为 syslog 解析器添加最小测试。
- 修复
autodetect_format()的调用。 - 使用 maxlength 时截断语句。感谢 Thibaud Madelaine 提供补丁。
- 添加多种输出格式的测试。
-o | --outfile可多次指定,使单条命令输出多种格式。例如: pgbadger -o out.txt -o out.html -o - -x json /log/pgsql-11.log 此命令生成文本和 HTML 报告,保存到对应文件,同时向标准输出写出 JSON 报告。感谢 Nikolay 提出需求。- 将输出格式检测与输出文件名设置移入专用函数
set_output_extension()。 - 修复另一处 PgBouncer 日志解析问题。感谢 Douglas J. Hunley 报告。
v10.2 · 2018-12-27
这是维护版本,修复了过去三个月用户报告的问题,并增加以下功能:
- 支持 PgBouncer 1.8 的 Stats 日志格式。
- 自动调整 JavaScript 图表的时区。
新增命令行选项与远程读取功能:
-
添加
--exclude-db,生成指定数据库以外的所有报告。 -
支持通过 HTTP 或 FTP 下载远程 PostgreSQL 日志。使用 curl 在下载过程中解析,日志不会保存到磁盘。SSH 远程解析也可在命令行以 URI 指定日志文件:
ssh://localhost/postgresql-10-main.log http://localhost/postgresql-10-main.log.gz ftp://localhost/postgresql-10-main.log当时 HTTP 和 FTP 需要在 URI 末尾指定日志格式:
http://localhost/postgresql-10-main.log:stderr可以指定多个日志 URI,适合同时解析远程 PgBouncer 日志和本地 PostgreSQL 日志。
SSH 协议也支持与远程模式相同的通配符,例如
ssh://localhost/postgresql-10-main.log*。使用
-r解析远程文件的旧写法仍可用,但当时已标为过时,并可能在未来版本移除。
其他缺陷修复与功能改进:
- 调整估算文件大小时的进度条结束处理,例如 bz2 文件与远程压缩文件。
- 更新版权年份。
- 补充使用 URI 解析远程日志的说明。
- 远程压缩文件解析完成后强制进度达到 100%。
- 在临时文件报告的查询中提取 PL/pgSQL 函数调用信息,并追加到详细信息区域。
- 修复 CSV 文件的进度条。
- 修复将二进制文件作为输入时误当日志文件读取的问题。
- 将查询的 HTML 输出编码为 UTF8,避免
Wide character in print消息。感谢 Colin ’t Hart 报告。 - 为检查点距离峰值添加键值信息。
- 修复 PgBouncer 解析和请求吞吐量报告。感谢 Levente Birta 报告。
- 修复输入格式使用 csvlog 而非 csv 的问题。
- 支持 PgBouncer 1.8 Stats 日志格式。感谢 Levente Birta 报告。
- CSV 日志禁用并行处理时添加警告。感谢 cstdenis 报告。
- 在用法中补充 csvlog 强制单进程的说明,涉及
-j和-J。感谢 cstdenis 报告。 - 修复通过 SSH 增量解析多行日志时的未知行格式错误。感谢 Wooyoung Cho 报告。
- 在 curl 命令中添加
-k(--insecure),允许从使用自签名证书的服务器下载日志。 - 自动调整 JavaScript 图表时区。感谢 Massimino Sala 提出需求。
- 支持 HTTP 日志下载,例如: /usr/bin/pgbadger http://www.mydom.com/postgresql-10.log
- 使用 curl 在下载过程中解析文件。
- 修复文档。感谢 0xflotus 提供补丁。
- 代码清理后重新应用绑定参数未替换的修复。感谢 Bernhard J. M. Grun 报告。
- 添加
--exclude-db,生成指定数据库以外的所有报告,可多次指定。
v10.1 · 2018-09-12
这是维护版本,修复了增量报告、使用 -j 的多进程模式,以及从标准输入解析日志的问题。使用 v10.0 的用户应升级。
- 添加 PgBouncer 日志解析器的测试。
- 进行小幅性能改进。
- 修复 pgBadger 第 12314 行的无效文件描述符错误。
- 修复启动时进度条中多余的换行。
- 从项目中移除 CircleCI 文件。
- 移除测试套件对 bats 和 jq 的依赖,改用
Test::Simple和JSON::XS。 - 增加测试,尤其覆盖 10.0 中损坏的增量模式和标准输入。
- 同步 pgbadger、POD 和 README,并修正语法错误。感谢 Christoph Berg 提供补丁。
- 添加通过 APT 和 Yum 安装 Perl 模块
JSON::XS的文档。 - 修复增量模式中的 CSS URI。感谢 Floris van Nee 报告。
- 修复从标准输入查找日志时的致命错误。感谢 Jacek Szpot 报告。
- 修复 OSX 构建中的 sed 使用。感谢 Steve Newson 提供补丁。
- 修复增量模式的除零错误。感谢 aleszeleny 报告。
- 将
SQL::Beautify替换为 pgFormatter::Beautify v3.1。
v10.0 · 2018-09-09
这是主要版本,增加新功能,并修复上一版本发布后用户报告的全部问题。
- 支持 PgBouncer 的 syslog 日志格式。
- 支持全部 auto_explain 格式:text、xml、json 和 yaml。
- 支持
log_line_prefix中的%q占位符。 - 支持 Michael Paquier 扩展的 jsonlog 格式,使用
-f jsonlog解析。 - 将 SQL 格式化器替换为 pgFormatter v3.0。
新增命令行选项:
- 添加
--prettify-json,对 JSON 输出进行排版。 - 添加
--log-timezone +/-XX,按相对 GMT 的小时偏移调整日志中的日期/时间后再解析。如果客户端时区不同,仍可能需要通过-Z调整图表时区。 - 添加
--include-time,直接选择需要展示的时间范围,避免用--exclude-time逐一排除不需要的范围。
pgBadger 项目与版权已从 Dalibo 转移给项目作者和官方维护者。请更新链接:
- 网站:http://pgbadger.darold.net/
- 源码:https://github.com/darold/pgbadger
作者感谢 Dalibo 团队这些年对 pgBadger 的投入,尤其是 Damien Clochard 和 Jean-paul argudo 对项目推广的帮助。
- 修复增量模式未报告检查点距离和估计值的问题。感谢 aleszeleny 报告。
- 修正 PgBouncer 并发会话报告的标题。感谢 Jehan Guillaume De Rorthais 报告。
- 支持 PgBouncer syslog 日志格式。感谢 djester 提出需求。
- 修复远程日志为空时的错误。感谢 Parasit Hendersson 报告。
- 修复二进制格式测试;二进制文件与平台相关,必须现场生成。感谢 Michal Nowak 报告。
- 修复生成空执行计划的情况。
- 修复命令行指定前缀时自动识别默认格式的解析。
- 移除
Makefile.PL对 git 命令的依赖。 - 更新选项变更文档,并移除必需前缀中的
[%l-1]部分。 - 修复 PostgreSQL 10 的 vacuum/analyze 系统使用信息解析。感谢 Achilleas Mantzios 提供补丁。
- 修复临时文件活动表格。
- 移除安装过程对 git 的依赖。
- 添加
--log-timezone +/-XX,按相对 GMT 的小时偏移调整日志中的日期/时间后再解析。这会使报告时间与原始日志不同,增加按时间搜索的难度。客户端时区不同仍可能需要通过-Z调整图表。感谢 xdexter 提出需求,以及 Julien Tachoire 提供补丁。 - 支持 auto_explain 的 JSON 输出格式。感谢 dmius 报告。
- 修复 auto_explain 解析器及查询被计数两次的问题。感谢 zam6ak 报告。
- 修复检查点正则表达式,使其匹配 PostgreSQL 10 日志消息。感谢 Edmund Horner 提供补丁。
- 在
-f | --format说明中补入 jsonlog 信息。 - 修复查询归一化,避免与 bind 查询重复;现在值统一替换为
?,不再将数字替换为 0、字符串替换为两个单引号。感谢 vadv 报告。 - 修复日志级别计数。感谢 Jean-Christophe Arnu 报告。
- 改善对 B::Lint 中裸子程序名检查的兼容性。
- 修复 perlcritic 检查问题。
- 添加
--prettify-json,对 JSON 输出排版;默认输出全部写在一行。 - 修复事件分布报告。
- 修复
log_line_prefix包含多个%%时--prefix的缺陷。感谢 svb007 报告。 - 添加
--log-timezone +/-XX,按相对 GMT 的小时偏移调整日志中的日期/时间后再解析。这会使报告时间与原始日志不同,增加按时间搜索的难度。客户端时区不同仍可能需要通过-Z调整图表。感谢 xdexter 提出需求。 - 从关键字列表移除 INDEXES,并加入 BUFFERS。
- 修复游标查询的归一化。
- 移除 Dockerfile 和 docker run 文档。上游认为 pgBadger 是无强制额外依赖的单个 Perl 脚本,可在不同平台运行;无需安装时,可直接复制 pgbadger 文件并执行。
- 修复没有临时文件活动时的网格布局。感谢 Pierre Giraud 提供补丁。
- 在文档中加入
log_min_duration_statement与log_duration + log_statement的注意事项。感谢 Julien Tachoire 提供补丁。 - 将时区偏移应用到柱状图。感谢 Julien Tachoire 提供补丁。
- 同一 PID 出现错误时删除当前临时文件信息。感谢 Julien Tachoire 提供补丁。
- 示例统一使用
app=,同时支持appname=。此前部分示例使用appname=,但代码未识别它;现在示例改用app=,解析器也接受appname=。感谢 Christoph Berg 提供补丁。 - 修正
-J的长选项名称,应为--Jobs,而非--job_per_file。感谢 Chad Trabant 报告,以及 Etienne Bersac 提供补丁。 - 忽略 blib 文件。感谢 Etienne Bersac 提供补丁。
- 添加一致性测试。感谢 damien clochard 提供补丁。
- 更新文档:stderr 不是
-f的默认值。感谢 Christophe Courtois 提供补丁。 - 始终更新 POD 和 README。感谢 Etienne Bersac 提供补丁。
- 添加回归测试。感谢 Etienne Bersac 提供补丁。
- 添加 editorconfig 配置。感谢 Etienne Bersac 提供补丁。
- 从 gitignore 中移除 vi 临时文件规则。感谢 Etienne Bersac 提供补丁。
- 添加
--include-time,直接选择要查看的时间。例如,从一周日志中只查看一两天,可以用一次--include-time替代多个--exclude-time。感谢 Wesley Bowman 提供补丁。 - 检查 POD 语法。感谢 Etienne Bersac 提供补丁。
- 添加 HACKING,记录测试方法。感谢 Etienne Bersac 提供补丁。
- 移除过时的
--bar-graph选项。感谢 Etienne Bersac 提供补丁。 - 移除容易误导的
.perltidyrc。该文件来自 2012 年,代码已与其规范差距很大,perltidy 的统一差异达 10k 行。感谢 Etienne Bersac 提供补丁。 - 修复 SQL 格式化中使用未初始化值的问题。感谢 John Krugger 和 Jean-paul Argudo 报告。
5 - pgBadger 9.x 版本记录
v9.2 · 2017-07-27
这是维护版本,并增加以下功能:
- 添加检查点距离与估计值报告。
- SQL 格式化器支持 AWS Redshift 关键字。
- 远程模式自动识别日志格式,允许同时解析远程 PgBouncer 与 PostgreSQL 日志。
其他缺陷修复与功能改进:
- 修复直方图未显示超过最后一个分组范围的数据的问题。
- 修复缺少日志行号模式
[%l-n]时的 journalctl 解析。感谢 Christian Schmitt 报告。 - 添加检查点距离与估计值报告。感谢 jjsantam 提出需求。
- 为更新 CSS 与 JavaScript 的脚本
tools/updt_embedded_rsc.pl补充工作内容说明。 - 全部日志文件为空时不再警告,并以返回码 0 退出。
- 修复
build_log_line_prefix_regex()未在%regex_map中查找%n的问题。感谢 ghosthound 提供补丁。 - 将
FATAL: cannot use CSV的错误级别改为 WARNING。感谢 kong1man 报告。 - 修复未初始化值的警告。感谢 Payal 报告。
- 在错误归一化中加入 permission denied 消息。
- 将内嵌 pgFormatter 更新至最新提交
5bdc018。 - 支持 AWS Redshift 关键字。感谢 cavanaug 提出需求。
- 修复查询被取消后临时文件报告缺少该查询的问题。感谢 Fabrizio de Royes Mello 报告。
- 将绑定参数替换为
?,对查询进行归一化。 - 增加校验,防止结束时间早于起始时间。感谢 Christophe Courtois 提供补丁。
- 修正多处拼写与语法;程序名称统一为 pgBadger,可执行文件名除外。统一 PgBouncer、GitHub 和 CSS 的官方写法,并同步 POD 与 README。感谢 Euler Taveira 提供补丁。
- 修复使用
--disable-type时的菜单:将 top_cancelled_info 判断及列表闭合放入 disable_type 判断中,同时调整 disable_lock 判断的缩进。感谢 Euler Taveira 提供补丁。 - 修复使用未初始化值的问题。感谢 johnkrugger 报告。
- 远程日志自动识别格式时,移除读取日志文件的测试。感谢 clomdd 报告。
- 远程模式自动识别日志格式,允许同时解析远程 PgBouncer 和 PostgreSQL 日志。
- 修复日志行校验后错误增加会话数的问题。感谢 Achilleas Mantzios 报告。
- 小幅调整 pgBadger 描述的格式。
- 修复文档中的重复信息。感谢 cscatolini 提供补丁。
v9.1 · 2017-01-24
这是维护版本,并增加以下功能:
- 当
log_line_prefix包含 SQLState(参见%e)时,报告错误类别分布。 - 将 SQL 格式化器更新至 pgFormatter v1.6。
- 改善错误消息归一化。
- 添加
--normalized-only,生成包含日志中全部归一化查询及次数的文本文件。 - 允许以
%c(会话 ID)替代%p(PID)作为唯一会话标识。 - 在事件报告中加入等待锁的消息。
- 添加
--start-monday,使日历每周从周一开始,默认则从周日开始。
其他缺陷修复与功能改进:
- 日志行前缀含 SQLState 时,报告错误类别分布。感谢 jacks33 提出需求。
- 修复调整窗口大小时的增量全局索引。感谢 clomdd 报告。
- 修复
log_line_prefix的命令标签占位符%i,允许含空格。 - 修复
--exclude-line,以及同时启用保留策略与--noreport时删除过期目录的逻辑。 - 修正 vacuum 活动表中的拼写错误。感谢 Nicolas Gollet 提供补丁。
- 修复 autovacuum 报告。感谢 Nicolas Gollet 提供补丁。
- 修正标志作者为 Damien Cazeils,并修正英文注释。感谢 Thibaut Madelaine 提供补丁。
- 在
-f说明中补充 PgBouncer 日志格式。感谢 clomdd 报告。 - 在文档中补充
--normalized-only信息。 - 修复上一补丁破坏的日期/时间报告。
- 修复
log_duration=on与log_statement=all时耗时和查询的关联。感谢 Eric Jensen 报告。 - 修复 advisory lock 消息的归一化。感谢 Thibaut Madelaine 报告。
- 修复 auto_explain 输出的报告。感谢 fch77700 报告。
- 修复标准输入日志记录触发不需要的格式自动识别的问题。感谢 Jesus Adolfo Parra 报告。
- 在前缀中查找数据库客户端的正则表达式停止字符中加入左括号,以处理包含源端口的 PostgreSQL 客户端字符串。感谢 Jon Nelson 提供补丁。
- 修正拼写错误。感谢 Jon Nelson 提供补丁。
- 允许以
%c(会话 ID)替代%p(PID)作为唯一会话标识。感谢 Jerryliuk 报告。 - 支持当时预计 PostgreSQL 10.0 将采用的默认
log_line_prefix:'%m [%p] '。 - 修复缺失的首行解释器调用。
- 修复 CSV 报告缺少平均值的问题。感谢 Yosuke Tomita 报告。
- 修正
autodetect_format()的错误消息。 - 添加
--start-monday,使日历每周从周一开始,默认从周日开始。感谢 Joosep Mae 提出需求。 - 修复
--histo-average。感谢 Yves Martin 报告。 - 在文档中移除
--ssh-option的复数写法。感谢 mark-a-s 报告。 - 修复
--exclude-time过滤,并重写跳过无关日志行及更新进度条的代码。感谢 Michael Chesterton 报告。 - 修复前缀中使用
%r而非%h的支持。
v9.0 · 2016-09-02
这个主要版本迁移至 Bootstrap 3,并升级全部资源文件(CSS 与 JavaScript)。同时修复缺陷并改进功能。
与旧增量报告的向后兼容性可能得以保留。
-
将资源文件的源码和许可证放入专用子目录,并添加脚本更新内嵌于 pgBadger 的压缩资源。感谢 Christoph Berg 协助并提出需求。
-
启用连接日志且
log_line_prefix缺少用户、数据库或主机信息时,尝试从连接字符串检测这些值。扩展正则表达式,自动识别数据库名、用户名、客户端 IP 与应用名称。表达式如下:
db => qr/(?:db|database)=([^,]*)/; user => qr/(?:user|usr)=([^,]*)/; client => qr/(?:client|remote|ip|host)=([^,]*)/; appname => qr/(?:app|application)=([^,]*)/; -
在增量模式下,为新的 CSS 和 JavaScript 创建以 pgBadger 主版本号命名的子目录,以兼容旧版报告。
-
放大 pgBadger 标志,避免在新字体大小下显得过小。
-
在全部报告中归一化详细信息。
-
修复锁报告中重复的复制图标。
-
修复会话耗时直方图缺失的图表。感谢 Guillaume Lelarge 报告。
-
添加 LICENSE 文件,注明资源文件使用的许可证。感谢 Christoph Berg 提供补丁。
-
修补 jqPlot,修复下载部分图表时的无限循环。感谢 Julien Tachoires 协助解决。
-
tools/updt_embedded_rsc.pl会将补丁应用到resources/jquery.jqplot.js;已应用过时不会报错。 -
移除饼图数据集末尾多余的逗号。感谢 Julien Tachoires 报告。
-
调整归一化错误的显示。
-
移除未使用或自动生成的文件。
-
更新全部 JavaScript/CSS 资源,并创建目录存放所用 JavaScript 库的源码。新脚本
tools/updt_embedded_rsc.pl可生成这些文件的压缩版本并嵌入 pgBadger,也会将 FontAwesome.otf 字体嵌入 fontawesome.css。