# 输出格式

> 选择 HTML、文本、二进制、JSON 或原始 CSV 输出，并合并中间数据文件

---

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

---

pgBadger 会根据输出文件扩展名，或 `-x` / `--extension` 选项选择格式。同一次解析可多次使用 `-o` / `--outfile`，同时生成多种格式。

| 格式 | 常用扩展名 | 最适合 |
|---|---|---|
| HTML | `.html` | 带图表的交互式人类可读报告 |
| 文本 | `.txt` | 终端查看与纯文本归档 |
| 二进制 | `.bin` | 可合并的中间统计数据与报告重建 |
| JSON | `.json` | 与其他软件集成；需要 `JSON::XS` |
| 原始 CSV | 自选输出文件 | 使用 `--dump-raw-csv` 导出逐行数据 |

## HTML 与文本 {#html-and-text}

默认输出为 `out.html`：

```console
$ pgbadger postgresql.log -o report.html
```

HTML 通常会内嵌独立浏览所需的脚本、样式、字体与报告数据。`-X` / `--extra-files` 会把增量报告的公共 JavaScript 与 CSS 移到外部文件；移动 HTML 目录时必须保留这些资源。

显式生成文本：

```console
$ pgbadger -x text -o report.txt postgresql.log
```

对于支持的格式，可用 `-` 作为输出文件名，把内容写到标准输出。

## 二进制中间数据 {#binary-format}

二进制输出把“解析日志”和“展示报告”分开。可以从一份持续增长的每日日志中生成逐小时增量：

```console
$ pgbadger --last-parsed .pgbadger_last_state \
    -o sunday/hour01.bin \
    /var/log/pgsql/postgresql-Sun.log
```

把一个或多个二进制文件合并为新报告：

```console
$ pgbadger -o sunday.html sunday/*.bin
```

如果服务器每小时生成一个日志，可为每次轮转生成一份二进制文件，并按需重建累计 HTML：

```console
$ pgbadger -o day1/hour01.bin postgresql-2026-08-15_01.log
$ pgbadger -o day1/hour02.bin postgresql-2026-08-15_02.log
$ pgbadger -o day1/hour03.bin postgresql-2026-08-15_03.log
$ pgbadger -o day1.html day1/*.bin
```

同一个目录中应只混用彼此兼容的 pgBadger 版本生成的二进制文件。升级长期保留的增量目录前，应先查看版本说明中的格式兼容性信息。

## JSON {#json-format}

JSON 输出面向监控或报告流水线等程序化消费者：

```console
$ pgbadger -o report.json postgresql.log
```

需要先安装 `JSON::XS`。如果可读性比文件大小和生成速度更重要，可加入 `--prettify-json`。

## 原始数据与查询导出 {#raw-exports}

命令参考还提供以下专用导出模式：

- `--dump-raw-csv` 解析日志并输出逐行 CSV，不再生成报告；
- `--csv-separator` 修改原始 CSV 分隔符；
- `--dump-all-queries` 在替换绑定参数后输出所有查询；
- `--normalized-only` 输出归一化查询；
- `--query-numbering` 为查询类文本输出编号。

这些输出可能包含应用 SQL、标识符、用户、客户端地址或字面量。共享前应先检查内容；如果分析不需要保留字面量，请使用 `--anonymize`。

---

反链：

- [pgBadger](/zh/docs/pgbadger/)
