Skip to content

Commit 41ecead

Browse files
authored
Merge pull request #3954 from manticoresoftware/vacuum_spaces
feat: skip extra spaces for JSONs in query log
2 parents 8963d3c + 0eda57a commit 41ecead

File tree

7 files changed

+187
-94
lines changed

7 files changed

+187
-94
lines changed

.translation-cache/Logging/Query_logging.md.json

Lines changed: 8 additions & 0 deletions
Large diffs are not rendered by default.

manual/chinese/Logging/Query_logging.md

Lines changed: 34 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
<!-- example query_logging -->
44
可以通过在配置文件的 searchd 部分设置 [query_log](../Server_settings/Searchd.md#query_log) 指令来启用查询日志。
55

6-
查询也可以通过设置 `syslog`(而不是文件路径)发送到 syslog。在这种情况下,所有搜索查询将以 `LOG_INFO` 优先级发送到 syslog 守护进程,前缀为 `[query]`而不是时间戳。syslog 仅支持 `plain` 日志格式。
6+
也可以通过将 `syslog` 设置为文件路径来将查询发送到 syslog。在这种情况下,所有搜索查询将以 `LOG_INFO` 优先级发送到 syslog 守护进程,前缀为 `[query]` 而不是时间戳。syslog 仅支持 `plain` 日志格式。
77

88
<!-- intro -->
99
`query_log` 示例:
@@ -22,15 +22,15 @@ searchd {
2222
## 日志格式
2323

2424
支持两种查询日志格式:
25-
* `sphinxql`(默认):以 SQL 格式记录日志。它还提供了一种轻松重放已记录查询的方法
26-
* `plain`:以简单文本格式记录全文查询。若大多数查询主要是全文查询,或者不需要记录非全文组件(如按属性过滤、排序或分组),推荐使用此格式。以 `plain` 格式记录的查询无法重放。请注意,通过 [Buddy](../Installation/Manticore_Buddy.md) 处理的查询不会在此模式下记录
25+
* `sphinxql`(默认):以 SQL 格式记录日志。它还提供了一种便捷方式来重放已记录的查询
26+
* `plain`:以简单文本格式记录全文查询。建议在大多数查询主要为全文查询或不需要记录非全文组件(例如按属性过滤、排序或分组)的情况下使用此格式。以 `plain` 格式记录的查询无法重放。请注意,通过 [Buddy](../Installation/Manticore_Buddy.md) 处理的查询在此模式下不会被记录
2727

28-
要切换格式,可以使用 searchd 设置 [query_log_format](../Server_settings/Searchd.md#query_log_format)
28+
要在格式之间切换,可以使用 searchd 设置中的 [query_log_format](../Server_settings/Searchd.md#query_log_format)
2929

3030
### SQL 日志格式
3131

3232
<!-- example sphixql_log -->
33-
SQL 日志格式是默认设置。在此模式下,Manticore 记录所有成功和失败的 select 查询。以 SQL 或二进制 API 发送的请求以 SQL 格式记录,但 JSON 查询按原样记录。此类日志仅适用于普通日志文件,不支持使用 'syslog' 服务记录
33+
SQL 日志格式是默认设置。在此模式下,Manticore 会记录所有成功和失败的 select 查询。以 SQL 或通过二进制 API 发送的请求以 SQL 格式记录,但 JSON 查询按原样记录。此类日志仅适用于普通日志文件,不支持用于日志的 'syslog' 服务
3434

3535
<!-- intro -->
3636
`query_log_format` 示例:
@@ -42,39 +42,29 @@ query_log_format = sphinxql # default
4242
<!-- end -->
4343

4444
<!-- example sphixql_log2 -->
45-
[plain 格式](../Logging/Query_logging.md#Plain-log-format)相比,Manticore SQL 日志格式的特点包括
45+
相比于[plain 格式](../Logging/Query_logging.md#Plain-log-format),Manticore SQL 日志格式的特性包括
4646
* 尽可能记录完整的语句数据。
4747
* 记录错误和警告。
48-
* 查询日志可以重放。
49-
* 记录额外的性能计数器(当前为每个代理的分布式查询时间)。
50-
* 每条日志条目都是有效的 Manticore SQL/JSON 语句,可重构完整请求,除非记录的请求过大,为性能考虑需要缩短。
51-
* JSON 请求及附加消息、计数器等以注释形式记录。
48+
* 查询日志可被重放。
49+
* 记录额外的性能计数器(目前为每个代理的分布式查询时间)。
50+
* 每条日志条目都是有效的 Manticore SQL/JSON 语句,可重建完整请求,除非被记录的请求过大,出于性能原因需要缩短。
51+
* JSON 请求作为注释记录,跳过元素之间的多余空白。
52+
* 额外消息、计数器等作为注释记录。
5253

5354
<!-- intro -->
5455
`sphinxql` 日志条目示例:
5556
<!-- request Example -->
5657
```sql
5758
/* Sun Apr 28 12:38:02.808 2024 conn 2 (127.0.0.1:53228) real 0.000 wall 0.000 found 0 */ SELECT * FROM test WHERE MATCH('test') OPTION ranker=proximity;
5859
/* Sun Apr 28 12:38:05.585 2024 conn 2 (127.0.0.1:53228) real 0.001 wall 0.001 found 0 */ SELECT * FROM test WHERE MATCH('test') GROUP BY channel_id OPTION ranker=proximity;
59-
/* Sun Apr 28 12:40:57.366 2024 conn 4 (127.0.0.1:53256) real 0.000 wall 0.000 found 0 */ /*{
60-
"table" : "test",
61-
"query":
62-
{
63-
"match":
64-
{
65-
"*" : "test"
66-
}
67-
},
68-
"_source": ["f"],
69-
"limit": 30
70-
} */
60+
/* Sun Apr 28 12:40:57.366 2024 conn 4 (127.0.0.1:53256) real 0.000 wall 0.000 found 0 */ /*{ "index" : "test", "query": { "match": { "*" : "test" } }, "_source": ["f"], "limit": 30 } */
7161
```
7262
<!-- end -->
7363

7464
### Plain 日志格式
7565

7666
<!-- example plain_log -->
77-
使用 `plain` 日志格式时,Manticore 以简单文本格式记录所有成功执行的搜索查询。查询的非全文部分不被记录。JSON 查询以单行条目记录。通过 [Buddy](../Installation/Manticore_Buddy.md) 处理的查询不会被记录。
67+
使用 `plain` 日志格式时,Manticore 以简单文本格式记录所有成功执行的搜索查询。查询的非全文部分不会被记录。JSON 查询以单行条目记录。通过 [Buddy](../Installation/Manticore_Buddy.md) 处理的查询不会被记录。
7868

7969
<!-- intro -->
8070
`query_log_format` 示例:
@@ -92,27 +82,27 @@ query_log_format = plain
9282
```
9383

9484
其中:
95-
* `real-time` 是查询从开始到结束的时间
85+
* `real-time` 是从查询开始到结束的时间
9686
* `wall-time` 类似于 real-time,但不包括等待代理和合并代理结果集的时间。
97-
* `perf-stats` 包含 CPU/IO 统计信息,当 Manticore `--cpustats` 启动(或通过 `SET GLOBAL cpustats=1` 启用)和/或 `--iostats` 启动(或通过 `SET GLOBAL iostats=1` 启用)
98-
- `ios` 是执行的文件 I/O 操作次数;
87+
* `perf-stats` 包含当 Manticore `--cpustats`(或通过 `SET GLOBAL cpustats=1` 启用)和/或 `--iostats`(或通过 `SET GLOBAL iostats=1` 启用)启动时的 CPU/IO 统计信息
88+
- `ios` 是完成的文件 I/O 操作次数;
9989
- `kb` 是从表文件读取的数据量(千字节);
100-
- `ms` I/O 操作所花费的时间
101-
- `cpums` 是处理查询时 CPU 花费的毫秒数
102-
* `match-mode` 可以是以下值之一
103-
- "all" 表示 `SPH_MATCH_ALL` 模式;
104-
- "any" 表示 `SPH_MATCH_ANY` 模式;
105-
- "phr" 表示 `SPH_MATCH_PHRASE` 模式;
106-
- "bool" 表示 `SPH_MATCH_BOOLEAN` 模式;
107-
- "ext" 表示 `SPH_MATCH_EXTENDED` 模式;
108-
- "ext2" 表示 `SPH_MATCH_EXTENDED2` 模式;
109-
- "scan" 表示使用了全扫描模式,可能是通过 `SPH_MATCH_FULLSCAN` 指定,或查询为空。
110-
* `sort-mode` 可以是以下值之一
111-
- "rel" 表示 `SPH_SORT_RELEVANCE` 模式;
112-
- "attr-" 表示 `SPH_SORT_ATTR_DESC` 模式;
113-
- "attr+" 表示 `SPH_SORT_ATTR_ASC` 模式;
114-
- "tsegs" 表示 `SPH_SORT_TIME_SEGMENTS` 模式;
115-
- "ext" 表示 `SPH_SORT_EXTENDED` 模式。
90+
- `ms` 是用于 I/O 操作的时间
91+
- `cpums` 是处理查询所用的 CPU 时间(毫秒)
92+
* `match-mode` 可以是以下之一
93+
- all” 代表 `SPH_MATCH_ALL` 模式;
94+
- any” 代表 `SPH_MATCH_ANY` 模式;
95+
- phr” 代表 `SPH_MATCH_PHRASE` 模式;
96+
- bool” 代表 `SPH_MATCH_BOOLEAN` 模式;
97+
- ext” 代表 `SPH_MATCH_EXTENDED` 模式;
98+
- ext2” 代表 `SPH_MATCH_EXTENDED2` 模式;
99+
- scan” 如果使用了全扫描模式,或通过 `SPH_MATCH_FULLSCAN` 指定,或查询为空。
100+
* `sort-mode` 可以是以下之一
101+
- rel” 代表 `SPH_SORT_RELEVANCE` 模式;
102+
- attr-” 代表 `SPH_SORT_ATTR_DESC` 模式;
103+
- attr+” 代表 `SPH_SORT_ATTR_ASC` 模式;
104+
- tsegs” 代表 `SPH_SORT_TIME_SEGMENTS` 模式;
105+
- ext” 代表 `SPH_SORT_EXTENDED` 模式。
116106

117107
注意:`SPH*` 模式特指 `sphinx` 旧接口。SQL 和 JSON 接口在大多数情况下会记录 `ext2` 作为 `match-mode`,以及 `ext``rel` 作为 `sort-mode`
118108

@@ -132,7 +122,7 @@ query_log_format = plain
132122
## 仅记录慢查询
133123

134124
<!-- example query_log_min_msec -->
135-
默认情况下,所有查询都会被记录。如果只想记录执行时间超过指定限制的查询,可以使用 `query_log_min_msec` 指令。
125+
默认情况下,会记录所有查询。如果只想记录执行时间超过指定限制的查询,可以使用 `query_log_min_msec` 指令。
136126

137127
预期的单位是毫秒,但也可以使用时间后缀表达式。
138128

@@ -154,7 +144,7 @@ searchd {
154144
## 日志文件权限模式
155145

156146
<!-- Example query_log_mode -->
157-
默认情况下,searchd 和查询日志文件的权限为 `600`,因此只有运行 Manticore 的用户和 `root` 可以读取日志文件。`query_log_mode` 选项允许设置不同的权限。这对于允许其他用户读取日志文件(例如,运行在非 root 用户下的监控解决方案)很有帮助
147+
默认情况下,searchd 和查询日志文件的权限为 `600`,因此只有运行 Manticore 的用户和 `root` 可以读取日志文件。`query_log_mode` 选项允许设置不同的权限。这有助于允许其他用户读取日志文件(例如,运行在非 root 用户下的监控解决方案)。
158148

159149
<!-- intro -->
160150
`query_log_mode` 示例:

manual/english/Logging/Query_logging.md

Lines changed: 3 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -48,26 +48,16 @@ The features of the Manticore SQL log format compared to the [plain format](../L
4848
* The query log can be replayed.
4949
* Additional performance counters (currently, per-agent distributed query times) are logged.
5050
* Each log entry is a valid Manticore SQL/JSON statement that reconstructs the full request, except if the logged request is too large and needs to be shortened for performance reasons.
51-
* JSON requests and additional messages, counters, etc., are logged as comments.
51+
* JSON requests are logged as comments, skipping extra whitespaces between elements.
52+
* Additional messages, counters, etc., are logged as comments.
5253

5354
<!-- intro -->
5455
`sphinxql` log entries example:
5556
<!-- request Example -->
5657
```sql
5758
/* Sun Apr 28 12:38:02.808 2024 conn 2 (127.0.0.1:53228) real 0.000 wall 0.000 found 0 */ SELECT * FROM test WHERE MATCH('test') OPTION ranker=proximity;
5859
/* Sun Apr 28 12:38:05.585 2024 conn 2 (127.0.0.1:53228) real 0.001 wall 0.001 found 0 */ SELECT * FROM test WHERE MATCH('test') GROUP BY channel_id OPTION ranker=proximity;
59-
/* Sun Apr 28 12:40:57.366 2024 conn 4 (127.0.0.1:53256) real 0.000 wall 0.000 found 0 */ /*{
60-
"table" : "test",
61-
"query":
62-
{
63-
"match":
64-
{
65-
"*" : "test"
66-
}
67-
},
68-
"_source": ["f"],
69-
"limit": 30
70-
} */
60+
/* Sun Apr 28 12:40:57.366 2024 conn 4 (127.0.0.1:53256) real 0.000 wall 0.000 found 0 */ /*{ "index" : "test", "query": { "match": { "*" : "test" } }, "_source": ["f"], "limit": 30 } */
7161
```
7262
<!-- end -->
7363

0 commit comments

Comments
 (0)