sf-debug-log 0.2.4 → 0.3.0
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 +184 -6
- package/lib/commands/debug/delete.js +1 -1
- package/lib/commands/debug/delete.js.map +1 -1
- package/lib/commands/debug/retrieve.d.ts +15 -7
- package/lib/commands/debug/retrieve.js +89 -24
- package/lib/commands/debug/retrieve.js.map +1 -1
- package/lib/types.d.ts +3 -2
- package/lib/utils.d.ts +1 -0
- package/lib/utils.js +18 -3
- package/lib/utils.js.map +1 -1
- package/messages/debug.delete.md +1 -1
- package/messages/debug.retrieve.md +8 -3
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -19,6 +19,181 @@ sf plugins install sf-debug-log
|
|
|
19
19
|
|
|
20
20
|
## Commands
|
|
21
21
|
<!-- commands -->
|
|
22
|
+
* [`sf debug delete`](#sf-debug-delete)
|
|
23
|
+
* [`sf debug retrieve`](#sf-debug-retrieve)
|
|
24
|
+
* [`sf debuglevel list`](#sf-debuglevel-list)
|
|
25
|
+
* [`sf debuglevel new`](#sf-debuglevel-new)
|
|
26
|
+
* [`sf trace new`](#sf-trace-new)
|
|
27
|
+
|
|
28
|
+
## `sf debug delete`
|
|
29
|
+
|
|
30
|
+
Delete Apex log files from a Salesforce org.
|
|
31
|
+
|
|
32
|
+
```
|
|
33
|
+
USAGE
|
|
34
|
+
$ sf debug delete -o <value> [--json] [--flags-dir <value>] [--api-version <value>] [-u <value>] [-t <value>]
|
|
35
|
+
[-a]
|
|
36
|
+
|
|
37
|
+
FLAGS
|
|
38
|
+
-a, --all-users Retrieve logs for all users in the org.
|
|
39
|
+
-o, --targetusername=<value> (required) Username or alias of the target Salesforce org.
|
|
40
|
+
-t, --time=<value> Delete logs older than the specified number of minutes.
|
|
41
|
+
-u, --user=<value> [default: targetusername] Username, Name, or ID of the user for whom you want to delete
|
|
42
|
+
the logs.
|
|
43
|
+
--api-version=<value> [default: 65.0] API version to use.
|
|
44
|
+
|
|
45
|
+
GLOBAL FLAGS
|
|
46
|
+
--flags-dir=<value> Import flag values from a directory.
|
|
47
|
+
--json Format output as json.
|
|
48
|
+
|
|
49
|
+
DESCRIPTION
|
|
50
|
+
Delete Apex log files from a Salesforce org.
|
|
51
|
+
|
|
52
|
+
Deletes Apex log files from a Salesforce org.
|
|
53
|
+
|
|
54
|
+
EXAMPLES
|
|
55
|
+
$ sf debug delete -u "Raffaele Preziosi" -t 60
|
|
56
|
+
|
|
57
|
+
FLAG DESCRIPTIONS
|
|
58
|
+
--api-version=<value> API version to use.
|
|
59
|
+
|
|
60
|
+
Override the api version used for api requests made by this command
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
## `sf debug retrieve`
|
|
64
|
+
|
|
65
|
+
Retrieve Apex log files from the Salesforce platform.
|
|
66
|
+
|
|
67
|
+
```
|
|
68
|
+
USAGE
|
|
69
|
+
$ sf debug retrieve -o <value> [--json] [--flags-dir <value>] [--api-version <value>] [-q <value> | [-u <value> |
|
|
70
|
+
-a] | -t <value> | -l <value> | ] [-d <value>]
|
|
71
|
+
|
|
72
|
+
FLAGS
|
|
73
|
+
-a, --all-users Retrieve logs for all users in the org.
|
|
74
|
+
-d, --folder=<value> The folder where the retrieved log files will be stored. If omitted, the selected logs
|
|
75
|
+
are streamed to stdout.
|
|
76
|
+
-l, --limit=<value> [default: 100] The max number of log files to retrieve.
|
|
77
|
+
-o, --targetusername=<value> (required) Username or alias of the target Salesforce org.
|
|
78
|
+
-q, --query=<value> SOQL query used to select `ApexLog` records to retrieve. This flag can't be used with
|
|
79
|
+
`--user`, `--time`, `--limit`, or `--all-users`.
|
|
80
|
+
-t, --time=<value> Retrieve logs created in the last specified number of minutes.
|
|
81
|
+
-u, --user=<value> [default: targetusername] Username, Name, or ID of the user for whom you want to
|
|
82
|
+
retrieve the logs.
|
|
83
|
+
--api-version=<value> [default: 65.0] API version to use.
|
|
84
|
+
|
|
85
|
+
GLOBAL FLAGS
|
|
86
|
+
--flags-dir=<value> Import flag values from a directory.
|
|
87
|
+
--json Format output as json.
|
|
88
|
+
|
|
89
|
+
DESCRIPTION
|
|
90
|
+
Retrieve Apex log files from the Salesforce platform.
|
|
91
|
+
|
|
92
|
+
This command allows you to retrieve Apex log files from a Salesforce org. If you don't specify `--folder`, the log
|
|
93
|
+
contents are streamed to stdout.
|
|
94
|
+
|
|
95
|
+
EXAMPLES
|
|
96
|
+
$ sf debug retrieve -o MyDeveloperEdition -u "Raffaele Preziosi" -t 10
|
|
97
|
+
$ sf debug retrieve -o MyDeveloperEdition -q "SELECT Id FROM ApexLog ORDER BY SystemModstamp DESC LIMIT 1" | rg "EXCEPTION"
|
|
98
|
+
|
|
99
|
+
FLAG DESCRIPTIONS
|
|
100
|
+
--api-version=<value> API version to use.
|
|
101
|
+
|
|
102
|
+
Override the api version used for api requests made by this command
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
## `sf debuglevel list`
|
|
106
|
+
|
|
107
|
+
List the debug levels in your org.
|
|
108
|
+
|
|
109
|
+
```
|
|
110
|
+
USAGE
|
|
111
|
+
$ sf debuglevel list -o <value> [--json] [--flags-dir <value>] [--api-version <value>]
|
|
112
|
+
|
|
113
|
+
FLAGS
|
|
114
|
+
-o, --targetusername=<value> (required) Username or alias of the target Salesforce org.
|
|
115
|
+
--api-version=<value> [default: 65.0] API version to use.
|
|
116
|
+
|
|
117
|
+
GLOBAL FLAGS
|
|
118
|
+
--flags-dir=<value> Import flag values from a directory.
|
|
119
|
+
--json Format output as json.
|
|
120
|
+
|
|
121
|
+
DESCRIPTION
|
|
122
|
+
List the debug levels in your org.
|
|
123
|
+
|
|
124
|
+
List the debug levels in your org.
|
|
125
|
+
|
|
126
|
+
EXAMPLES
|
|
127
|
+
$ sf debuglevel list -o MyDeveloperEdition
|
|
128
|
+
|
|
129
|
+
FLAG DESCRIPTIONS
|
|
130
|
+
--api-version=<value> API version to use.
|
|
131
|
+
|
|
132
|
+
Override the api version used for api requests made by this command
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
## `sf debuglevel new`
|
|
136
|
+
|
|
137
|
+
Create a new DebugLevel.
|
|
138
|
+
|
|
139
|
+
```
|
|
140
|
+
USAGE
|
|
141
|
+
$ sf debuglevel new -o <value> -n <value> [--json] [--flags-dir <value>] [--api-version <value>]
|
|
142
|
+
|
|
143
|
+
FLAGS
|
|
144
|
+
-n, --developername=<value> (required) The developer name of the new DebugLevel.
|
|
145
|
+
-o, --targetusername=<value> (required) Username or alias of the target Salesforce org.
|
|
146
|
+
--api-version=<value> [default: 65.0] API version to use.
|
|
147
|
+
|
|
148
|
+
GLOBAL FLAGS
|
|
149
|
+
--flags-dir=<value> Import flag values from a directory.
|
|
150
|
+
--json Format output as json.
|
|
151
|
+
|
|
152
|
+
DESCRIPTION
|
|
153
|
+
Create a new DebugLevel.
|
|
154
|
+
|
|
155
|
+
Create a new DebugLevel assigning level for each category.
|
|
156
|
+
|
|
157
|
+
EXAMPLES
|
|
158
|
+
$ sf debuglevel new
|
|
159
|
+
|
|
160
|
+
FLAG DESCRIPTIONS
|
|
161
|
+
--api-version=<value> API version to use.
|
|
162
|
+
|
|
163
|
+
Override the api version used for api requests made by this command
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
## `sf trace new`
|
|
167
|
+
|
|
168
|
+
Create a trace flag for a user.
|
|
169
|
+
|
|
170
|
+
```
|
|
171
|
+
USAGE
|
|
172
|
+
$ sf trace new -o <value> [--json] [--flags-dir <value>] [--api-version <value>] [-u <value>] [-t <value>]
|
|
173
|
+
[-f] [-d <value>]
|
|
174
|
+
|
|
175
|
+
FLAGS
|
|
176
|
+
-d, --debuglevel=<value> [default: SFDC_DevConsole] The debug level for the trace flag.
|
|
177
|
+
-f, --force Force the creation of the trace flag.
|
|
178
|
+
-o, --targetusername=<value> (required) Username or alias of the target Salesforce org.
|
|
179
|
+
-t, --time=<value> [default: 60] The time for the trace flag.
|
|
180
|
+
-u, --user=<value> [default: targetusername] Username, Name, or ID of the user for whom you want to
|
|
181
|
+
retrieve the logs.
|
|
182
|
+
--api-version=<value> [default: 65.0] API version to use.
|
|
183
|
+
|
|
184
|
+
GLOBAL FLAGS
|
|
185
|
+
--flags-dir=<value> Import flag values from a directory.
|
|
186
|
+
--json Format output as json.
|
|
187
|
+
|
|
188
|
+
EXAMPLES
|
|
189
|
+
$ sf trace new -o MyDeveloperEdition -u "Raffaele Preziosi" -t 10
|
|
190
|
+
|
|
191
|
+
FLAG DESCRIPTIONS
|
|
192
|
+
--api-version=<value> API version to use.
|
|
193
|
+
|
|
194
|
+
Override the api version used for api requests made by this command
|
|
195
|
+
```
|
|
196
|
+
<!-- commandsstop -->
|
|
22
197
|
- [`sf trace new`](#sf-trace-new)
|
|
23
198
|
- [`sf debug retrieve`](#sf-debug-retrieve)
|
|
24
199
|
- [`sf debug delete`](#sf-debug-delete)
|
|
@@ -52,17 +227,20 @@ EXAMPLES
|
|
|
52
227
|
|
|
53
228
|
## `sf debug retrieve`
|
|
54
229
|
|
|
55
|
-
Retrieve Apex log files from the Salesforce platform.
|
|
230
|
+
Retrieve Apex log files from the Salesforce platform. If `--folder` is omitted, the selected log contents are streamed to stdout.
|
|
56
231
|
|
|
57
232
|
```
|
|
58
233
|
USAGE
|
|
59
|
-
$ sf debug retrieve -o <value> [-u <value>] [-t <value>] [-d <value>] [-a]
|
|
234
|
+
$ sf debug retrieve -o <value> [-u <value>] [-t <value>] [-l <value>] [-q <value>] [-d <value>] [-a]
|
|
60
235
|
|
|
61
236
|
FLAGS
|
|
62
237
|
-a, --all-users Retrieve log files for all users.
|
|
63
|
-
-d, --folder=<value>
|
|
238
|
+
-d, --folder=<value> The folder where the retrieved log files will be stored. If omitted, the selected logs
|
|
239
|
+
are streamed to stdout.
|
|
64
240
|
-o, --targetusername=<value> (required) Username or alias of the target Salesforce org.
|
|
65
241
|
-l, --limit=<value> [default: 100] The max number of log files to retrieve.
|
|
242
|
+
-q, --query=<value> SOQL query used to select ApexLog records to retrieve. This flag can't be used with
|
|
243
|
+
--user, --time, --limit, or --all-users.
|
|
66
244
|
-t, --time=<value> The number of minutes to retrieve log files for.
|
|
67
245
|
-u, --user=<value> [default: current user] Username, Name, or ID of the user for whom you want to retrieve the logs.
|
|
68
246
|
|
|
@@ -71,6 +249,8 @@ GLOBAL FLAGS
|
|
|
71
249
|
|
|
72
250
|
EXAMPLES
|
|
73
251
|
sf debug retrieve -o DeveloperEdition -u "Raffaele Preziosi" -t 10
|
|
252
|
+
|
|
253
|
+
sf debug retrieve -o DeveloperEdition -q "SELECT Id FROM ApexLog ORDER BY SystemModstamp DESC LIMIT 1" | rg "EXCEPTION"
|
|
74
254
|
```
|
|
75
255
|
|
|
76
256
|
## `sf debug delete`
|
|
@@ -84,7 +264,7 @@ USAGE
|
|
|
84
264
|
FLAGS
|
|
85
265
|
-a, --all-users Delete log files for all users.
|
|
86
266
|
-o, --targetusername=<value> (required) Username or alias of the target Salesforce org.
|
|
87
|
-
-t, --time=<value>
|
|
267
|
+
-t, --time=<value> Delete logs older than the specified number of minutes.
|
|
88
268
|
-u, --user=<value> [default: current user] Username, Name, or ID of the user for whom you want to retrieve the logs.
|
|
89
269
|
|
|
90
270
|
GLOBAL FLAGS
|
|
@@ -133,5 +313,3 @@ DESCRIPTION
|
|
|
133
313
|
EXAMPLES
|
|
134
314
|
sf debuglevel new -o DeveloperEdition -n "DebugLevel"
|
|
135
315
|
```
|
|
136
|
-
|
|
137
|
-
|
|
@@ -46,7 +46,7 @@ export default class DebugDelete extends SfCommand {
|
|
|
46
46
|
getLogsOptions.userId = userId;
|
|
47
47
|
}
|
|
48
48
|
if (flags.time) {
|
|
49
|
-
getLogsOptions.
|
|
49
|
+
getLogsOptions.timeOlderThan = flags.time;
|
|
50
50
|
}
|
|
51
51
|
const logs = await getLogs(conn, getLogsOptions);
|
|
52
52
|
await deleteLogs(conn, logs);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"delete.js","sourceRoot":"","sources":["../../../src/commands/debug/delete.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,QAAQ,EAAmB,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAEhE,QAAQ,CAAC,kCAAkC,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC7D,MAAM,QAAQ,GAAG,QAAQ,CAAC,YAAY,CAAC,cAAc,EAAE,cAAc,CAAC,CAAC;AAIvE,MAAM,CAAC,OAAO,OAAO,WAAY,SAAQ,SAAe;IAC/C,MAAM,CAAU,OAAO,GAAG,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;IACzD,MAAM,CAAU,WAAW,GAAG,QAAQ,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;IACjE,MAAM,CAAU,QAAQ,GAAG,QAAQ,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;IAE5D,MAAM,CAAU,KAAK,GAAG;QAC7B,aAAa,EAAE,KAAK,CAAC,aAAa,CAAC;YACjC,OAAO,EAAE,QAAQ,CAAC,UAAU,CAAC,2BAA2B,CAAC;SAC1D,CAAC;QACF,cAAc,EAAE,KAAK,CAAC,WAAW,CAAC;YAChC,OAAO,EAAE,QAAQ,CAAC,UAAU,CAAC,8BAA8B,CAAC;YAC5D,IAAI,EAAE,GAAG;YACT,QAAQ,EAAE,IAAI;SACf,CAAC;QACF,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC;YACjB,OAAO,EAAE,QAAQ,CAAC,UAAU,CAAC,oBAAoB,CAAC;YAClD,IAAI,EAAE,GAAG;SACV,CAAC;QACF,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC;YAClB,OAAO,EAAE,QAAQ,CAAC,UAAU,CAAC,oBAAoB,CAAC;YAClD,IAAI,EAAE,GAAG;SACV,CAAC;QACF,WAAW,EAAE,KAAK,CAAC,OAAO,CAAC;YACzB,OAAO,EAAE,QAAQ,CAAC,UAAU,CAAC,yBAAyB,CAAC;YACvD,IAAI,EAAE,GAAG;YACT,OAAO,EAAE,KAAK;SACf,CAAC;KACH,CAAC;IAEK,KAAK,CAAC,GAAG;QACd,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QAChD,IAAI,KAAK,CAAC,WAAW,CAAC,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;YACrC,IAAI,CAAC,KAAK,CAAC,kDAAkD,CAAC,CAAC;QACjE,CAAC;QAED,MAAM,IAAI,GAAe,KAAK,CAAC,cAAc,CAAC,aAAa,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC;QAClF,MAAM,cAAc,GAAmB,EAAE,CAAC;QAE1C,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC;YACxB,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAE,IAAI,CAAC,WAAW,EAAa,CAAC;YACtE,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YAC3C,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,YAAY,CAAC,CAAC;YACvC,CAAC;YACD,cAAc,CAAC,MAAM,GAAG,MAAM,CAAC;QACjC,CAAC;QAED,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;YACf,cAAc,CAAC,
|
|
1
|
+
{"version":3,"file":"delete.js","sourceRoot":"","sources":["../../../src/commands/debug/delete.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,17 +1,25 @@
|
|
|
1
|
+
import type { Interfaces } from '@oclif/core';
|
|
1
2
|
import { SfCommand } from '@salesforce/sf-plugins-core';
|
|
2
3
|
export default class Retrieve extends SfCommand<void> {
|
|
3
4
|
static readonly summary: string;
|
|
4
5
|
static readonly description: string;
|
|
5
6
|
static readonly examples: string[];
|
|
6
7
|
static readonly flags: {
|
|
7
|
-
'api-version':
|
|
8
|
-
targetusername:
|
|
9
|
-
user:
|
|
10
|
-
time:
|
|
11
|
-
limit:
|
|
12
|
-
|
|
13
|
-
|
|
8
|
+
'api-version': Interfaces.OptionFlag<string | undefined, Interfaces.CustomOptions>;
|
|
9
|
+
targetusername: Interfaces.OptionFlag<import("@salesforce/core").Org, Interfaces.CustomOptions>;
|
|
10
|
+
user: Interfaces.OptionFlag<string | undefined, Interfaces.CustomOptions>;
|
|
11
|
+
time: Interfaces.OptionFlag<number | undefined, Interfaces.CustomOptions>;
|
|
12
|
+
limit: Interfaces.OptionFlag<number, Interfaces.CustomOptions>;
|
|
13
|
+
query: Interfaces.OptionFlag<string | undefined, Interfaces.CustomOptions>;
|
|
14
|
+
folder: Interfaces.OptionFlag<string | undefined, Interfaces.CustomOptions>;
|
|
15
|
+
'all-users': Interfaces.BooleanFlag<boolean>;
|
|
14
16
|
};
|
|
17
|
+
private static pipeLog;
|
|
18
|
+
private static getDownloadUrl;
|
|
19
|
+
private static createStdoutWriter;
|
|
15
20
|
run(): Promise<void>;
|
|
21
|
+
private getLogsFromFlags;
|
|
16
22
|
private saveLogs;
|
|
23
|
+
private streamLogsToStdout;
|
|
24
|
+
private warnDownloadError;
|
|
17
25
|
}
|
|
@@ -1,9 +1,16 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { createWriteStream } from 'node:fs';
|
|
2
|
+
import { mkdir } from 'node:fs/promises';
|
|
3
|
+
import path from 'node:path';
|
|
4
|
+
import { pipeline as nodePipeline, Writable } from 'node:stream';
|
|
5
|
+
import { promisify } from 'node:util';
|
|
2
6
|
import { SfCommand, Flags } from '@salesforce/sf-plugins-core';
|
|
3
7
|
import { Messages } from '@salesforce/core';
|
|
4
|
-
import { getUserId,
|
|
8
|
+
import { getUserId, getLogs, getLogsByQuery } from '../../utils.js';
|
|
5
9
|
Messages.importMessagesDirectoryFromMetaUrl(import.meta.url);
|
|
6
10
|
const messages = Messages.loadMessages('sf-debug-log', 'debug.retrieve');
|
|
11
|
+
const pipeline = promisify(nodePipeline);
|
|
12
|
+
const QUERY_EXCLUSIVE_FLAGS = ['user', 'time', 'limit', 'all-users'];
|
|
13
|
+
const EMPTY_DOWNLOAD_SUMMARY = { failedCount: 0, savedCount: 0 };
|
|
7
14
|
export default class Retrieve extends SfCommand {
|
|
8
15
|
static summary = messages.getMessage('summary');
|
|
9
16
|
static description = messages.getMessage('description');
|
|
@@ -20,6 +27,7 @@ export default class Retrieve extends SfCommand {
|
|
|
20
27
|
user: Flags.string({
|
|
21
28
|
summary: messages.getMessage('flags.user.summary'),
|
|
22
29
|
char: 'u',
|
|
30
|
+
exclusive: ['all-users'],
|
|
23
31
|
}),
|
|
24
32
|
time: Flags.integer({
|
|
25
33
|
summary: messages.getMessage('flags.time.summary'),
|
|
@@ -28,60 +36,117 @@ export default class Retrieve extends SfCommand {
|
|
|
28
36
|
limit: Flags.integer({
|
|
29
37
|
summary: messages.getMessage('flags.limit.summary'),
|
|
30
38
|
char: 'l',
|
|
31
|
-
default: 100
|
|
39
|
+
default: 100,
|
|
40
|
+
}),
|
|
41
|
+
query: Flags.string({
|
|
42
|
+
summary: messages.getMessage('flags.query.summary'),
|
|
43
|
+
char: 'q',
|
|
44
|
+
exclusive: QUERY_EXCLUSIVE_FLAGS,
|
|
32
45
|
}),
|
|
33
46
|
folder: Flags.directory({
|
|
34
47
|
summary: messages.getMessage('flags.folder.summary'),
|
|
35
48
|
char: 'd',
|
|
36
|
-
default: '.sfdx/tools/debug/logs',
|
|
37
49
|
}),
|
|
38
50
|
'all-users': Flags.boolean({
|
|
39
51
|
summary: messages.getMessage('flags.all-users.summary'),
|
|
40
52
|
char: 'a',
|
|
41
53
|
default: false,
|
|
54
|
+
exclusive: ['user'],
|
|
42
55
|
}),
|
|
43
56
|
};
|
|
57
|
+
static async pipeLog(conn, log, destination) {
|
|
58
|
+
const request = conn.request(Retrieve.getDownloadUrl(conn, log));
|
|
59
|
+
await Promise.all([pipeline(request.stream(), destination), request.then(() => undefined)]);
|
|
60
|
+
}
|
|
61
|
+
static getDownloadUrl(conn, log) {
|
|
62
|
+
return `${conn.instanceUrl}/apexdebug/traceDownload.apexp?id=${log.Id}`;
|
|
63
|
+
}
|
|
64
|
+
static createStdoutWriter() {
|
|
65
|
+
return new Writable({
|
|
66
|
+
write(chunk, encoding, callback) {
|
|
67
|
+
if (typeof chunk === 'string') {
|
|
68
|
+
process.stdout.write(chunk, encoding, callback);
|
|
69
|
+
}
|
|
70
|
+
else {
|
|
71
|
+
process.stdout.write(chunk, callback);
|
|
72
|
+
}
|
|
73
|
+
},
|
|
74
|
+
});
|
|
75
|
+
}
|
|
44
76
|
async run() {
|
|
45
|
-
const { flags } = await this.parse(Retrieve);
|
|
46
|
-
|
|
47
|
-
this.error('Cannot use --all-users and --user flags together');
|
|
48
|
-
}
|
|
77
|
+
const { flags: parsedFlags } = await this.parse(Retrieve);
|
|
78
|
+
const flags = parsedFlags;
|
|
49
79
|
const conn = flags.targetusername.getConnection(flags['api-version']);
|
|
80
|
+
const logs = flags.query ? await getLogsByQuery(conn, flags.query) : await this.getLogsFromFlags(conn, flags);
|
|
81
|
+
const downloadSummary = flags.folder
|
|
82
|
+
? await this.saveLogs(conn, logs, flags.folder)
|
|
83
|
+
: await this.streamLogsToStdout(conn, logs);
|
|
84
|
+
if (downloadSummary.failedCount > 0) {
|
|
85
|
+
const label = downloadSummary.failedCount === 1 ? 'log' : 'logs';
|
|
86
|
+
this.error(`Failed to retrieve ${downloadSummary.failedCount} ${label}.`);
|
|
87
|
+
}
|
|
88
|
+
if (flags.folder) {
|
|
89
|
+
this.log(`saved\t${downloadSummary.savedCount}`);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
async getLogsFromFlags(conn, flags) {
|
|
50
93
|
const getLogsOptions = {};
|
|
51
94
|
if (!flags['all-users']) {
|
|
52
|
-
|
|
53
|
-
const user = flags.user ? flags.user : conn.getUsername();
|
|
95
|
+
const user = flags.user ?? conn.getUsername();
|
|
54
96
|
const userId = await getUserId(conn, user);
|
|
55
97
|
if (!userId) {
|
|
56
98
|
this.error(`User ${user} not found`);
|
|
57
99
|
}
|
|
58
100
|
getLogsOptions.userId = userId;
|
|
59
101
|
}
|
|
60
|
-
if (flags.time) {
|
|
102
|
+
if (flags.time !== undefined) {
|
|
61
103
|
getLogsOptions.timeLimit = flags.time;
|
|
62
104
|
}
|
|
63
|
-
if (flags.limit) {
|
|
105
|
+
if (flags.limit !== undefined) {
|
|
64
106
|
getLogsOptions.limit = flags.limit;
|
|
65
107
|
}
|
|
66
|
-
|
|
67
|
-
await this.saveLogs(conn, logs, flags.folder);
|
|
68
|
-
this.log(`saved\t${logs.length}`);
|
|
108
|
+
return getLogs(conn, getLogsOptions);
|
|
69
109
|
}
|
|
70
110
|
async saveLogs(conn, logs, directory) {
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
const url = `${conn.instanceUrl}/apexdebug/traceDownload.apexp?id=${log.Id}`;
|
|
74
|
-
const fileName = `${log.Id}.log`;
|
|
75
|
-
const filePath = path.join(directory, fileName);
|
|
111
|
+
const results = await Promise.all(logs.map(async (log) => {
|
|
112
|
+
const filePath = path.join(directory, `${log.Id}.log`);
|
|
76
113
|
try {
|
|
77
|
-
|
|
78
|
-
await
|
|
114
|
+
await mkdir(path.dirname(filePath), { recursive: true });
|
|
115
|
+
await Retrieve.pipeLog(conn, log, createWriteStream(filePath));
|
|
116
|
+
return { failedCount: 0, savedCount: 1 };
|
|
79
117
|
}
|
|
80
118
|
catch (err) {
|
|
81
|
-
|
|
82
|
-
|
|
119
|
+
this.warnDownloadError(log, err);
|
|
120
|
+
return { failedCount: 1, savedCount: 0 };
|
|
83
121
|
}
|
|
84
122
|
}));
|
|
123
|
+
return results.reduce((summary, result) => ({
|
|
124
|
+
failedCount: summary.failedCount + result.failedCount,
|
|
125
|
+
savedCount: summary.savedCount + result.savedCount,
|
|
126
|
+
}), EMPTY_DOWNLOAD_SUMMARY);
|
|
127
|
+
}
|
|
128
|
+
async streamLogsToStdout(conn, logs) {
|
|
129
|
+
return logs.reduce(async (summaryPromise, log) => {
|
|
130
|
+
const summary = await summaryPromise;
|
|
131
|
+
try {
|
|
132
|
+
await Retrieve.pipeLog(conn, log, Retrieve.createStdoutWriter());
|
|
133
|
+
return {
|
|
134
|
+
failedCount: summary.failedCount,
|
|
135
|
+
savedCount: summary.savedCount + 1,
|
|
136
|
+
};
|
|
137
|
+
}
|
|
138
|
+
catch (err) {
|
|
139
|
+
this.warnDownloadError(log, err);
|
|
140
|
+
return {
|
|
141
|
+
failedCount: summary.failedCount + 1,
|
|
142
|
+
savedCount: summary.savedCount,
|
|
143
|
+
};
|
|
144
|
+
}
|
|
145
|
+
}, Promise.resolve(EMPTY_DOWNLOAD_SUMMARY));
|
|
146
|
+
}
|
|
147
|
+
warnDownloadError(log, err) {
|
|
148
|
+
const errorMessage = err instanceof Error ? err.message : '';
|
|
149
|
+
this.warn(`Error downloading log for ${log.Id}: ${errorMessage}`);
|
|
85
150
|
}
|
|
86
151
|
}
|
|
87
152
|
//# sourceMappingURL=retrieve.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"retrieve.js","sourceRoot":"","sources":["../../../src/commands/debug/retrieve.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"retrieve.js","sourceRoot":"","sources":["../../../src/commands/debug/retrieve.ts"],"names":[],"mappings":"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"}
|
package/lib/types.d.ts
CHANGED
|
@@ -6,11 +6,12 @@ export interface GetLogsOptions {
|
|
|
6
6
|
userId?: string | null;
|
|
7
7
|
timeLimit?: number | null;
|
|
8
8
|
limit?: number | null;
|
|
9
|
+
timeOlderThan?: number | null;
|
|
9
10
|
}
|
|
10
11
|
export type ApexLog = {
|
|
11
12
|
Id: string;
|
|
12
|
-
LogUser
|
|
13
|
-
Username
|
|
13
|
+
LogUser?: {
|
|
14
|
+
Username?: string;
|
|
14
15
|
};
|
|
15
16
|
};
|
|
16
17
|
export type TraceFlag = {
|
package/lib/utils.d.ts
CHANGED
|
@@ -7,4 +7,5 @@ export declare function getDebugLevels(conn: Connection): Promise<DebugLevel[]>;
|
|
|
7
7
|
export declare function createTraceFlag(conn: Connection, userId: string, debugLevelId: string, time: number): Promise<SaveResult>;
|
|
8
8
|
export declare function createDebugLevel(conn: Connection, debugLevel: DebugLevelCreate): Promise<SaveResult>;
|
|
9
9
|
export declare function getLogs(conn: Connection, options: GetLogsOptions): Promise<ApexLog[]>;
|
|
10
|
+
export declare function getLogsByQuery(conn: Connection, query: string): Promise<ApexLog[]>;
|
|
10
11
|
export declare function deleteLogs(conn: Connection, logs: ApexLog[]): Promise<void>;
|
package/lib/utils.js
CHANGED
|
@@ -87,13 +87,17 @@ export async function getLogs(conn, options) {
|
|
|
87
87
|
];
|
|
88
88
|
let queryString = `SELECT ${LOG_FIELDS.join(',')} FROM ApexLog`;
|
|
89
89
|
const whereConditions = [];
|
|
90
|
-
|
|
90
|
+
const minutes = options.timeLimit ?? options.timeOlderThan;
|
|
91
|
+
if (minutes) {
|
|
91
92
|
const dateTime = new Date(Date.now());
|
|
92
|
-
dateTime.setMinutes(dateTime.getMinutes() -
|
|
93
|
+
dateTime.setMinutes(dateTime.getMinutes() - minutes);
|
|
93
94
|
const startTime = dateTime.toISOString();
|
|
94
|
-
if (
|
|
95
|
+
if (options.timeLimit != null) {
|
|
95
96
|
whereConditions.push(`SystemModstamp > ${startTime}`);
|
|
96
97
|
}
|
|
98
|
+
else {
|
|
99
|
+
whereConditions.push(`SystemModstamp < ${startTime}`);
|
|
100
|
+
}
|
|
97
101
|
}
|
|
98
102
|
if (options.userId) {
|
|
99
103
|
whereConditions.push(`LogUserId = '${options.userId}'`);
|
|
@@ -108,6 +112,17 @@ export async function getLogs(conn, options) {
|
|
|
108
112
|
const queryResult = await conn.query(queryString);
|
|
109
113
|
return queryResult.records;
|
|
110
114
|
}
|
|
115
|
+
export async function getLogsByQuery(conn, query) {
|
|
116
|
+
if (!/\bfrom\s+apexlog\b/i.test(query)) {
|
|
117
|
+
throw new Error('The --query SOQL must query ApexLog records.');
|
|
118
|
+
}
|
|
119
|
+
const queryResult = await conn.query(query);
|
|
120
|
+
const logs = queryResult.records;
|
|
121
|
+
if (logs.some((log) => !log.Id)) {
|
|
122
|
+
throw new Error('The --query SOQL must select the ApexLog Id field.');
|
|
123
|
+
}
|
|
124
|
+
return logs;
|
|
125
|
+
}
|
|
111
126
|
export async function deleteLogs(conn, logs) {
|
|
112
127
|
if (logs && logs.length > 0) {
|
|
113
128
|
const ids = logs.map((log) => log.Id).filter((id) => id !== undefined);
|
package/lib/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"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"}
|
package/messages/debug.delete.md
CHANGED
|
@@ -4,7 +4,7 @@ Retrieve Apex log files from the Salesforce platform.
|
|
|
4
4
|
|
|
5
5
|
# description
|
|
6
6
|
|
|
7
|
-
This command allows you to retrieve Apex log files from a Salesforce org.
|
|
7
|
+
This command allows you to retrieve Apex log files from a Salesforce org. If you don't specify `--folder`, the log contents are streamed to stdout.
|
|
8
8
|
|
|
9
9
|
# flags.user.summary
|
|
10
10
|
|
|
@@ -16,15 +16,19 @@ Username or alias of the target Salesforce org.
|
|
|
16
16
|
|
|
17
17
|
# flags.time.summary
|
|
18
18
|
|
|
19
|
-
|
|
19
|
+
Retrieve logs created in the last specified number of minutes.
|
|
20
20
|
|
|
21
21
|
# flags.limit.summary
|
|
22
22
|
|
|
23
23
|
The max number of log files to retrieve.
|
|
24
24
|
|
|
25
|
+
# flags.query.summary
|
|
26
|
+
|
|
27
|
+
SOQL query used to select `ApexLog` records to retrieve. This flag can't be used with `--user`, `--time`, `--limit`, or `--all-users`.
|
|
28
|
+
|
|
25
29
|
# flags.folder.summary
|
|
26
30
|
|
|
27
|
-
The folder where the retrieved log files will be stored.
|
|
31
|
+
The folder where the retrieved log files will be stored. If omitted, the selected logs are streamed to stdout.
|
|
28
32
|
|
|
29
33
|
# flags.all-users.summary
|
|
30
34
|
|
|
@@ -41,3 +45,4 @@ Failed to save logs: %s.
|
|
|
41
45
|
# examples
|
|
42
46
|
|
|
43
47
|
sf debug retrieve -o MyDeveloperEdition -u "Raffaele Preziosi" -t 10
|
|
48
|
+
sf debug retrieve -o MyDeveloperEdition -q "SELECT Id FROM ApexLog ORDER BY SystemModstamp DESC LIMIT 1" | rg "EXCEPTION"
|