rl-rockcli 0.0.12 → 0.0.14

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,10 +1,9 @@
1
1
  # ROCK CLI (rockcli)
2
2
 
3
- ROCK CLI 是一个开源的命令行工具,用于管理和操作沙箱环境以及查询日志数据。
3
+ ROCK CLI 是一个开源的命令行工具,用于管理和操作沙箱环境。
4
4
 
5
5
  ## 功能特性
6
6
 
7
- - **日志查询** - 搜索和实时查看日志数据
8
7
  - **沙箱管理** - 启动、停止、执行、上传/下载文件、交互式 REPL
9
8
  - **会话管理** - 持久化执行环境,支持环境变量继承
10
9
 
@@ -35,99 +34,6 @@ rockcli <command> [options]
35
34
 
36
35
  ## 命令详解
37
36
 
38
- ### 日志查询 (log)
39
-
40
- 日志查询功能支持两种模式:
41
- - **search**:查询指定时间范围内的日志
42
- - **tail**:实时滚动查看日志,每 5 秒自动刷新
43
-
44
- #### 命令
45
-
46
- ```bash
47
- # 搜索日志
48
- rockcli log search [options]
49
-
50
- # 实时滚动查看日志
51
- rockcli log tail [options]
52
- ```
53
-
54
- #### 选项说明
55
-
56
- ##### 查询条件参数
57
-
58
- - `[sandboxId]` - 位置参数,指定沙箱 ID
59
- - `--sandbox-id` - 按沙箱 ID 过滤
60
- - `-k, --keyword` - 搜索关键词
61
- - `-f, --field` - 按字段名和值搜索(格式:`field=value`,可多次指定)
62
- - `--log-file` - 指定日志文件名(需配合 --sandbox-id 使用)
63
-
64
- ##### 时间范围参数(仅 search 支持)
65
-
66
- - `-m, --minutes` - 搜索最近 N 分钟的日志(默认:15)
67
- - `-s, --start-time` - 开始时间
68
- - `-e, --end-time` - 结束时间
69
-
70
- ##### 结果控制参数
71
-
72
- - `-l, --limit` - 限制返回结果数量(默认:100)
73
- - `-o, --offset` - 跳过前 N 条日志(默认:0,仅 search 支持)
74
-
75
- ##### 输出格式参数
76
-
77
- - `--raw` - 显示原始输出(默认:false)
78
- - `--log-format` - 输出格式:`logfmt`(默认)、`json`、`columns`
79
- - `--columns` - 过滤显示的字段(逗号分隔)
80
- - `--multilines` - 允许多行展示(默认:false)
81
- - `--truncate` - 截断长字段值(默认:2048 字符)
82
-
83
- ##### 特殊功能参数
84
-
85
- - `--count` - 仅显示匹配的日志条数(仅 search 支持)
86
- - `--debug` - 启用调试模式,输出执行的查询语句
87
- - `-i, --interval` - 扫描间隔(秒),默认:5(仅 tail 支持)
88
- - `-n` - 首次显示的最近日志条数,默认:10(仅 tail 支持)
89
-
90
- #### 示例
91
-
92
- ```bash
93
- # 搜索最近 15 分钟的日志
94
- rockcli log search -k "error"
95
-
96
- # 搜索最近 30 分钟的日志
97
- rockcli log search -k "error" -m 30
98
-
99
- # 使用位置参数指定沙箱 ID
100
- rockcli log search abc123
101
-
102
- # 限制返回结果数量(返回 50 条)
103
- rockcli log search -k "error" -l 50
104
-
105
- # 按字段名精确搜索
106
- rockcli log search -f "level=ERROR" -m 15
107
-
108
- # 实时滚动查看日志(默认 5 秒间隔)
109
- rockcli log tail -k "error"
110
-
111
- # 自定义扫描间隔为 10 秒
112
- rockcli log tail -k "error" -i 10
113
-
114
- # 显示最近 20 条日志,然后实时更新
115
- rockcli log tail -k "error" -n 20
116
-
117
- # 监控特定沙箱的日志
118
- rockcli log tail --sandbox-id abc123
119
-
120
- # 使用 JSON 格式输出
121
- rockcli log search -k "error" --log-format json
122
-
123
- # 只统计日志条数,不显示内容
124
- rockcli log search -k "error" -m 15 --count
125
-
126
- # 使用原始输出格式
127
- rockcli log search -k "error" --raw
128
- ```
129
-
130
- ### 沙箱管理 (sandbox)
131
37
 
132
38
  #### 基本语法
133
39
 
@@ -265,7 +171,6 @@ REPL 模式支持:
265
171
  - 命令历史(上下键浏览)
266
172
  - Tab 补全
267
173
  - 内置命令(以 `/` 开头):
268
- - `/log` - 搜索日志
269
174
  - `/upload` / `/download` - 文件传输
270
175
  - `/status` - 查看状态
271
176
  - `/help` - 帮助
package/index.js CHANGED
@@ -22,7 +22,6 @@ const { hideBin } = require('yargs/helpers');
22
22
 
23
23
  // ⚠️ 关键:只引用 Core 命令,不引用 Internal
24
24
  // 这确保打包时不会包含内网代码
25
- const logCommand = require('./commands/log'); // 已支持 ROCKCLI_MODE 过滤
26
25
  const sandboxCommand = require('./commands/sandbox'); // 已支持 ROCKCLI_MODE 过滤
27
26
 
28
27
  // ASCII Art Logo
@@ -41,7 +40,6 @@ function run() {
41
40
  cli
42
41
  .scriptName('rockcli')
43
42
  .usage(LOGO + '\n\nUsage: $0 <command> [options]')
44
- .command(logCommand)
45
43
  .command(sandboxCommand)
46
44
  .demandCommand(1, '请提供一个有效的命令。使用 --help 查看可用命令。')
47
45
  .strict()
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "rl-rockcli",
3
- "version": "0.0.12",
3
+ "version": "0.0.14",
4
4
  "description": "Open-source ROCK CLI - Sandbox and Log management tool",
5
5
  "bin": {
6
6
  "rockcli": "./index.js"
@@ -1,237 +0,0 @@
1
- // 日志显示字段配置
2
- const DISPLAY_FIELDS = [
3
- 'timestamp',
4
- 'time',
5
- 'time_iso8601',
6
- 'ms',
7
- 'level',
8
- 'sandbox_id',
9
- 'trace_id',
10
- 'sent_http_request_id',
11
- 'request_id',
12
- 'callId',
13
- 'logger',
14
- 'thread',
15
- 'field',
16
- 'method',
17
- 'class',
18
- 'request_method',
19
- 'url',
20
- 'request_uri',
21
- 'host',
22
- 'status',
23
- 'status_code',
24
- 'process_time',
25
- 'request_time_usec',
26
- 'request_length',
27
- 'body_bytes_sent',
28
- 'upstream_response_tim',
29
- 'message',
30
- 'request',
31
- "headers",
32
- "http_Authorization",
33
- "http_x_cluster",
34
- "http_user_id",
35
- "http_x_experiment_id",
36
- "http_user_agent",
37
- 'request_body',
38
- 'response',
39
- 'filename',
40
- 'lineno',
41
- 'site',
42
- 'exc_info',
43
- 'exception',
44
- 'command_id',
45
- 'event',
46
- 'content',
47
- ];
48
-
49
- // 字段颜色映射(ANSI 颜色代码)
50
- // 1. 内置字段(@ 开头):灰色 - 系统元数据,通常不需要关注
51
- // 2. 一般情况不需要关注的字段:灰色 - 辅助信息,低价值
52
- // 3. 普通字段:青色 - 常规字段,有一定价值
53
- // 4. 重点字段:粗体青色 - 核心标识,最重要的字段
54
- const FIELD_COLOR_MAP = {
55
- // 1. 内置字段(@ 开头)- 灰色
56
- '@timestamp': '\x1b[0;90m',
57
- '@source': '\x1b[0;90m',
58
- '@app_group': '\x1b[0;90m',
59
- '@hostname': '\x1b[0;90m',
60
- '@filename': '\x1b[0;90m',
61
- '@packId': '\x1b[0;90m',
62
- '@logGroupOrder': '\x1b[0;90m',
63
- '@topic': '\x1b[0;90m',
64
- '@app_stage': '\x1b[0;90m',
65
- '@site': '\x1b[0;90m',
66
-
67
- // 2. 一般情况不需要关注的字段 - 灰色
68
- 'ms': '\x1b[0;90m',
69
- 'logger': '\x1b[0;90m',
70
- 'lineno': '\x1b[0;90m',
71
- 'site': '\x1b[0;90m',
72
- 'command_id': '\x1b[0;90m',
73
- 'sent_http_request_id': '\x1b[0;90m',
74
-
75
- // 3. 普通字段 - 青色
76
- 'method': '\x1b[0;36m',
77
- 'request_method': '\x1b[0;36m',
78
- 'field': '\x1b[0;36m',
79
- 'url': '\x1b[0;36m',
80
- 'request_uri': '\x1b[0;36m',
81
- 'status_code': '\x1b[0;36m',
82
- 'process_time': '\x1b[0;36m',
83
- 'request': '\x1b[0;36m',
84
- 'request_body': '\x1b[0;36m',
85
- 'response': '\x1b[0;36m',
86
- 'filename': '\x1b[0;36m',
87
- 'event': '\x1b[0;36m',
88
- 'content': '\x1b[0;36m',
89
- 'sandbox_id': '\x1b[0;36m',
90
- 'trace_id': '\x1b[0;36m',
91
-
92
- // 4. 重点字段 - 粗体青色
93
- 'timestamp': '\x1b[1;36m',
94
- 'time': '\x1b[1;36m',
95
- 'time_iso8601': '\x1b[1;36m',
96
- 'level': '\x1b[1;36m',
97
- 'message': '\x1b[1;36m',
98
- 'exc_info': '\x1b[1;31m', // 异常信息 - 红色粗体
99
- 'exception': '\x1b[1;31m', // 异常 - 红色粗体
100
- 'error': '\x1b[1;31m', // 错误 - 红色粗体
101
- };
102
-
103
- // 默认字段颜色
104
- const DEFAULT_FIELD_COLOR = '\x1b[0;90m';
105
-
106
- // 字段黑名单(格式化模式下不显示)
107
- const BLACKLIST_FIELDS = [
108
- 'sent_http_X_App_Id',
109
- 'scheme',
110
- 'remote_user',
111
- 'http_x_opensearch_rem',
112
- 'http_x_opensearch_sec',
113
- 'sent_http_Application',
114
- 'http_Content_Md5',
115
- 'http_date',
116
- 'sent_http_X_App_Name',
117
- 'http_Authorization',
118
- 'http_x_opensearch_non',
119
- 'sent_http_X_Aliyun_Us',
120
- 'sent_http_X_AppGroup_',
121
- 'upstream_response_tim',
122
- ];
123
-
124
- // 需要截断的字段
125
- const TRUNCATE_FIELDS = ['message', 'content', 'event'];
126
-
127
- // Group by field mapping
128
- const GROUP_BY_FIELDS = {
129
- 'file': '@filename',
130
- 'ip': '@source',
131
- 'app': '@app_group',
132
- 'hostname': '@hostname',
133
- 'cluster': '_cluster',
134
- };
135
-
136
- // Group by field display labels
137
- const GROUP_BY_LABELS = {
138
- '@filename': 'File',
139
- '@source': 'IP',
140
- '@app_group': 'App',
141
- '@hostname': 'Machine',
142
- '_cluster': 'Cluster',
143
- };
144
-
145
- // ANSI 颜色代码
146
- const ANSI_COLORS = {
147
- RESET: '\x1b[0m',
148
- BOLD: '\x1b[1m',
149
- CYAN: '\x1b[36m',
150
- YELLOW: '\x1b[33m',
151
- GREEN: '\x1b[32m',
152
- MAGENTA: '\x1b[35m',
153
- BLUE: '\x1b[34m',
154
- RED: '\x1b[31m',
155
- GRAY: '\x1b[90m',
156
- };
157
-
158
- // 查询时间范围(分钟)
159
- const TIME_RANGES = [15, 60, 180, 720, 1800, 43200];
160
-
161
- // 分页大小
162
- const PAGE_SIZE = 1000;
163
-
164
- // 日志文件名
165
- // 注意:内网专有日志路径已移到 config/internal_log_config.json
166
- const LOG_FILES = {
167
- // 保留空对象,由具体命令从配置文件加载
168
- };
169
-
170
-
171
- // 字段补全列表(用于 -f 参数的自动补全)
172
- const FIELD_COMPLETION_LIST = [
173
- // 系统内置字段(@ 开头)
174
- '@filename',
175
- '@source',
176
- '@app_group',
177
- '@hostname',
178
- '@timestamp',
179
- '@packId',
180
- '@logGroupOrder',
181
- '@topic',
182
- '@app_stage',
183
- '@site',
184
-
185
- // 常规字段
186
- 'status',
187
- 'status_code',
188
- 'level',
189
- 'message',
190
- 'method',
191
- 'request_method',
192
- 'url',
193
- 'request_uri',
194
- 'host',
195
- 'sandbox_id',
196
- 'trace_id',
197
- 'thread',
198
- 'logger',
199
- 'field',
200
- 'process_time',
201
- 'request_time_usec',
202
- 'request_length',
203
- 'body_bytes_sent',
204
- 'request',
205
- 'headers',
206
- 'http_Authorization',
207
- 'http_x_cluster',
208
- 'http_user_id',
209
- 'http_x_experiment_id',
210
- 'http_user_agent',
211
- 'request_body',
212
- 'response',
213
- 'filename',
214
- 'lineno',
215
- 'site',
216
- 'exc_info',
217
- 'exception',
218
- 'command_id',
219
- 'event',
220
- 'content',
221
- 'error',
222
- ];
223
-
224
- module.exports = {
225
- DISPLAY_FIELDS,
226
- FIELD_COLOR_MAP,
227
- DEFAULT_FIELD_COLOR,
228
- BLACKLIST_FIELDS,
229
- TRUNCATE_FIELDS,
230
- GROUP_BY_FIELDS,
231
- GROUP_BY_LABELS,
232
- ANSI_COLORS,
233
- TIME_RANGES,
234
- PAGE_SIZE,
235
- LOG_FILES,
236
- FIELD_COMPLETION_LIST,
237
- };