# pgBadger 10.x 版本记录

> pgBadger 10.x 系列的完整上游版本记录

---

LLMS 索引： [llms.txt](/zh/llms.txt)

---

## v10.3 · 2019-02-14 {#v10-3}

这是维护版本，修复了用户报告的日志格式自动识别问题，以及另一处 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 {#v10-2}

这是维护版本，修复了过去三个月用户报告的问题，并增加以下功能：

  * 支持 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 {#v10-1}

这是维护版本，修复了增量报告、使用 `-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 {#v10-0}

这是主要版本，增加新功能，并修复上一版本发布后用户报告的全部问题。

  * 支持 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 报告。

---

反链：

- [版本历史](/zh/docs/pgbadger/releases/)
