@sonisoft/now-sdk-ext-core 2.0.0-alpha.0 โ 2.0.0-alpha.2
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 +636 -2
- package/dist/comm/http/RequestHandler.js +24 -4
- package/dist/comm/http/RequestHandler.js.map +1 -1
- package/dist/comm/http/TableAPIRequest.d.ts +2 -0
- package/dist/comm/http/TableAPIRequest.js +8 -0
- package/dist/comm/http/TableAPIRequest.js.map +1 -1
- package/dist/sn/syslog/SyslogReader.d.ts +38 -0
- package/dist/sn/syslog/SyslogReader.js +174 -0
- package/dist/sn/syslog/SyslogReader.js.map +1 -1
- package/dist/sn/syslog/SyslogRecord.d.ts +24 -0
- package/package.json +16 -4
package/README.md
CHANGED
|
@@ -1,3 +1,637 @@
|
|
|
1
|
-
# ServiceNow SDK Extensions
|
|
1
|
+
# ServiceNow SDK Extensions Core
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
[](https://www.npmjs.com/package/@sonisoft/now-sdk-ext-core)
|
|
4
|
+
[](https://opensource.org/licenses/MIT)
|
|
5
|
+
[](https://nodejs.org)
|
|
6
|
+
|
|
7
|
+
A comprehensive TypeScript library that extends the ServiceNow SDK with powerful features for application management, automated testing, log monitoring, and more. Perfect for CI/CD pipelines, development automation, and DevOps workflows.
|
|
8
|
+
|
|
9
|
+
## โจ Features
|
|
10
|
+
|
|
11
|
+
- ๐ **Application Management** - Install, upgrade, and manage ServiceNow applications programmatically
|
|
12
|
+
- ๐งช **ATF Test Execution** - Run automated tests and get detailed results
|
|
13
|
+
- ๐ **Real-time Log Monitoring** - Tail ServiceNow logs with two efficient methods
|
|
14
|
+
- ๐ **AMB (Asynchronous Message Bus)** - WebSocket-based real-time event monitoring
|
|
15
|
+
- ๐ **Background Script Execution** - Execute server-side scripts programmatically
|
|
16
|
+
- ๐ **Authentication** - Seamless integration with ServiceNow CLI authentication
|
|
17
|
+
- ๐ก **Table API** - Full CRUD operations on ServiceNow tables
|
|
18
|
+
- ๐ ๏ธ **Type-Safe** - Complete TypeScript definitions for all APIs
|
|
19
|
+
|
|
20
|
+
## ๐ฆ Installation
|
|
21
|
+
|
|
22
|
+
```bash
|
|
23
|
+
npm install @sonisoft/now-sdk-ext-core
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
### Prerequisites
|
|
27
|
+
|
|
28
|
+
- Node.js 14.x or higher
|
|
29
|
+
- ServiceNow CLI configured with instance credentials
|
|
30
|
+
- TypeScript 4.x or higher (optional, for TypeScript projects)
|
|
31
|
+
|
|
32
|
+
### ServiceNow CLI Setup
|
|
33
|
+
|
|
34
|
+
```bash
|
|
35
|
+
# Install ServiceNow CLI globally
|
|
36
|
+
npm install -g @servicenow/sdk
|
|
37
|
+
|
|
38
|
+
# Configure your instance credentials
|
|
39
|
+
snc configure profile set
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
## ๐ Quick Start
|
|
43
|
+
|
|
44
|
+
### Basic Connection
|
|
45
|
+
|
|
46
|
+
```typescript
|
|
47
|
+
import { ServiceNowInstance } from '@sonisoft/now-sdk-ext-core';
|
|
48
|
+
import { getCredentials } from '@servicenow/sdk-cli/dist/auth/index.js';
|
|
49
|
+
|
|
50
|
+
// Get credentials from ServiceNow CLI
|
|
51
|
+
const credential = await getCredentials('your-instance-alias');
|
|
52
|
+
|
|
53
|
+
// Create instance connection
|
|
54
|
+
const instance = new ServiceNowInstance({
|
|
55
|
+
alias: 'your-instance-alias',
|
|
56
|
+
credential: credential
|
|
57
|
+
});
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
### Real-Time Log Monitoring
|
|
61
|
+
|
|
62
|
+
```typescript
|
|
63
|
+
import { SyslogReader } from '@sonisoft/now-sdk-ext-core';
|
|
64
|
+
|
|
65
|
+
const syslogReader = new SyslogReader(instance);
|
|
66
|
+
|
|
67
|
+
// Method 1: Using ChannelAjax (faster, more efficient)
|
|
68
|
+
await syslogReader.startTailingWithChannelAjax({
|
|
69
|
+
interval: 1000, // Poll every second
|
|
70
|
+
onLog: (log) => {
|
|
71
|
+
console.log(`[${log.sequence}] ${log.message}`);
|
|
72
|
+
},
|
|
73
|
+
outputFile: './logs/servicenow.log'
|
|
74
|
+
});
|
|
75
|
+
|
|
76
|
+
// Method 2: Using Table API (supports filtering)
|
|
77
|
+
await syslogReader.startTailing('syslog', {
|
|
78
|
+
interval: 5000,
|
|
79
|
+
query: 'level=error^ORDERBYDESCsys_created_on',
|
|
80
|
+
onLog: (log) => {
|
|
81
|
+
console.error(`ERROR: ${log.message}`);
|
|
82
|
+
}
|
|
83
|
+
});
|
|
84
|
+
|
|
85
|
+
// Stop tailing
|
|
86
|
+
syslogReader.stopTailing();
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
### Execute Background Scripts
|
|
90
|
+
|
|
91
|
+
```typescript
|
|
92
|
+
import { BackgroundScriptExecutor } from '@sonisoft/now-sdk-ext-core';
|
|
93
|
+
|
|
94
|
+
const executor = new BackgroundScriptExecutor(instance, 'global');
|
|
95
|
+
|
|
96
|
+
const script = `
|
|
97
|
+
var gr = new GlideRecord('incident');
|
|
98
|
+
gr.addQuery('active', true);
|
|
99
|
+
gr.query();
|
|
100
|
+
gs.info('Active incidents: ' + gr.getRowCount());
|
|
101
|
+
`;
|
|
102
|
+
|
|
103
|
+
const result = await executor.executeScript(script);
|
|
104
|
+
console.log('Script output:', result.output);
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
### Run ATF Tests
|
|
108
|
+
|
|
109
|
+
```typescript
|
|
110
|
+
import { ATFTestExecutor } from '@sonisoft/now-sdk-ext-core';
|
|
111
|
+
|
|
112
|
+
const testExecutor = new ATFTestExecutor(instance);
|
|
113
|
+
|
|
114
|
+
// Execute a test suite
|
|
115
|
+
const result = await testExecutor.executeTestSuite('test_suite_sys_id', {
|
|
116
|
+
timeout: 300000,
|
|
117
|
+
onProgress: (update) => {
|
|
118
|
+
console.log(`Progress: ${update.progress}% - ${update.status}`);
|
|
119
|
+
}
|
|
120
|
+
});
|
|
121
|
+
|
|
122
|
+
console.log(`Tests passed: ${result.testsPassedCount}/${result.totalTests}`);
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
## ๐ Core Features
|
|
126
|
+
|
|
127
|
+
### 1. Application Management
|
|
128
|
+
|
|
129
|
+
Programmatically manage ServiceNow applications, plugins, and updates.
|
|
130
|
+
|
|
131
|
+
```typescript
|
|
132
|
+
import { ApplicationManager, BatchInstallation } from '@sonisoft/now-sdk-ext-core';
|
|
133
|
+
|
|
134
|
+
const appManager = new ApplicationManager(instance);
|
|
135
|
+
|
|
136
|
+
// Install from batch definition
|
|
137
|
+
const success = await appManager.installBatch('./batch-definition.json');
|
|
138
|
+
|
|
139
|
+
// Get application details
|
|
140
|
+
const appDetails = await appManager.getApplicationDetails('com.example.my_app');
|
|
141
|
+
|
|
142
|
+
// Check which apps need updates
|
|
143
|
+
const needsAction = await appManager.getApplicationsNeedingAction('./batch-definition.json');
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
**Batch Definition Example:**
|
|
147
|
+
```json
|
|
148
|
+
{
|
|
149
|
+
"packages": [
|
|
150
|
+
{
|
|
151
|
+
"id": "com.snc.sdlc.agile.multi.2.0",
|
|
152
|
+
"type": "plugin",
|
|
153
|
+
"load_demo_data": false
|
|
154
|
+
},
|
|
155
|
+
{
|
|
156
|
+
"id": "sn_cicd_spoke",
|
|
157
|
+
"type": "application",
|
|
158
|
+
"version": "1.2.3",
|
|
159
|
+
"load_demo_data": false
|
|
160
|
+
}
|
|
161
|
+
]
|
|
162
|
+
}
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
### 2. ATF (Automated Test Framework) Testing
|
|
166
|
+
|
|
167
|
+
Execute tests and retrieve detailed results programmatically.
|
|
168
|
+
|
|
169
|
+
```typescript
|
|
170
|
+
import { ATFTestExecutor } from '@sonisoft/now-sdk-ext-core';
|
|
171
|
+
|
|
172
|
+
const testExecutor = new ATFTestExecutor(instance);
|
|
173
|
+
|
|
174
|
+
// Execute a single test
|
|
175
|
+
const result = await testExecutor.executeTest('test_sys_id', {
|
|
176
|
+
timeout: 120000,
|
|
177
|
+
onProgress: (update) => {
|
|
178
|
+
console.log(`Test: ${update.testName} - ${update.status}`);
|
|
179
|
+
}
|
|
180
|
+
});
|
|
181
|
+
|
|
182
|
+
// Execute test suite
|
|
183
|
+
const suiteResult = await testExecutor.executeTestSuite('suite_sys_id', {
|
|
184
|
+
timeout: 600000,
|
|
185
|
+
pollInterval: 5000
|
|
186
|
+
});
|
|
187
|
+
|
|
188
|
+
// Get detailed results
|
|
189
|
+
console.log(`Pass Rate: ${(suiteResult.testsPassedCount / suiteResult.totalTests * 100).toFixed(2)}%`);
|
|
190
|
+
console.log(`Failed Tests:`, suiteResult.testResults.filter(t => t.status === 'failure'));
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
### 3. Syslog Reading & Monitoring
|
|
194
|
+
|
|
195
|
+
Two methods for log monitoring, each optimized for different use cases.
|
|
196
|
+
|
|
197
|
+
#### ChannelAjax Method (Recommended for Real-Time)
|
|
198
|
+
|
|
199
|
+
**Benefits:**
|
|
200
|
+
- โก Faster (1s default polling vs 5s)
|
|
201
|
+
- ๐ฏ 100% reliable (sequence-based tracking)
|
|
202
|
+
- ๐ช Minimal server load
|
|
203
|
+
- โ
No duplicates or missed logs
|
|
204
|
+
|
|
205
|
+
```typescript
|
|
206
|
+
import { SyslogReader } from '@sonisoft/now-sdk-ext-core';
|
|
207
|
+
|
|
208
|
+
const syslogReader = new SyslogReader(instance);
|
|
209
|
+
|
|
210
|
+
await syslogReader.startTailingWithChannelAjax({
|
|
211
|
+
interval: 1000,
|
|
212
|
+
onLog: (log) => {
|
|
213
|
+
const timestamp = new Date(log.sys_created_on).toLocaleString();
|
|
214
|
+
console.log(`[${timestamp}] [Seq:${log.sequence}] ${log.message}`);
|
|
215
|
+
},
|
|
216
|
+
outputFile: './logs/tail.log'
|
|
217
|
+
});
|
|
218
|
+
```
|
|
219
|
+
|
|
220
|
+
#### Table API Method (Supports Filtering)
|
|
221
|
+
|
|
222
|
+
**Benefits:**
|
|
223
|
+
- ๐ Server-side filtering with encoded queries
|
|
224
|
+
- ๐ Access to syslog_app_scope table
|
|
225
|
+
- ๐จ Custom field selection
|
|
226
|
+
- ๐ Rich formatting options
|
|
227
|
+
|
|
228
|
+
```typescript
|
|
229
|
+
await syslogReader.startTailing('syslog', {
|
|
230
|
+
interval: 5000,
|
|
231
|
+
query: 'level=error^sys_created_on>javascript:gs.minutesAgoStart(10)',
|
|
232
|
+
onLog: (log) => {
|
|
233
|
+
if (log.level === 'error') {
|
|
234
|
+
sendAlert(log);
|
|
235
|
+
}
|
|
236
|
+
},
|
|
237
|
+
formatOptions: {
|
|
238
|
+
fields: ['sys_created_on', 'level', 'source', 'message'],
|
|
239
|
+
dateFormat: 'relative',
|
|
240
|
+
maxMessageWidth: 100
|
|
241
|
+
}
|
|
242
|
+
});
|
|
243
|
+
```
|
|
244
|
+
|
|
245
|
+
#### Query and Export Logs
|
|
246
|
+
|
|
247
|
+
```typescript
|
|
248
|
+
// Query recent errors
|
|
249
|
+
const errors = await syslogReader.querySyslog(
|
|
250
|
+
'level=error^ORDERBYDESCsys_created_on',
|
|
251
|
+
50
|
|
252
|
+
);
|
|
253
|
+
|
|
254
|
+
// Print formatted table
|
|
255
|
+
syslogReader.printTable(errors, {
|
|
256
|
+
fields: ['sys_created_on', 'level', 'source', 'message'],
|
|
257
|
+
maxMessageWidth: 80
|
|
258
|
+
});
|
|
259
|
+
|
|
260
|
+
// Export to file
|
|
261
|
+
await syslogReader.saveToFile(errors, './logs/errors.json', 'json');
|
|
262
|
+
await syslogReader.saveToFile(errors, './logs/errors.csv', 'csv');
|
|
263
|
+
await syslogReader.saveToFile(errors, './logs/errors.txt', 'table');
|
|
264
|
+
```
|
|
265
|
+
|
|
266
|
+
### 4. AMB (Asynchronous Message Bus)
|
|
267
|
+
|
|
268
|
+
Monitor real-time events and record changes via WebSocket.
|
|
269
|
+
|
|
270
|
+
```typescript
|
|
271
|
+
import { AMBClient, MessageClientBuilder } from '@sonisoft/now-sdk-ext-core';
|
|
272
|
+
|
|
273
|
+
const builder = new MessageClientBuilder();
|
|
274
|
+
const subscriptions = builder.buildClientSubscriptions();
|
|
275
|
+
const client = new AMBClient(subscriptions, instance);
|
|
276
|
+
|
|
277
|
+
// Authenticate and connect
|
|
278
|
+
await client.authenticate();
|
|
279
|
+
client.connect();
|
|
280
|
+
|
|
281
|
+
// Watch for incident changes
|
|
282
|
+
const channel = client.getRecordWatcherChannel('incident', 'active=true', null, {
|
|
283
|
+
subscriptionCallback: (message) => {
|
|
284
|
+
console.log('Incident updated:', message);
|
|
285
|
+
}
|
|
286
|
+
});
|
|
287
|
+
|
|
288
|
+
channel.subscribe((message) => {
|
|
289
|
+
console.log('Change detected:', message);
|
|
290
|
+
});
|
|
291
|
+
|
|
292
|
+
// Disconnect when done
|
|
293
|
+
client.disconnect();
|
|
294
|
+
```
|
|
295
|
+
|
|
296
|
+
### 5. Table API Operations
|
|
297
|
+
|
|
298
|
+
Full CRUD operations on ServiceNow tables.
|
|
299
|
+
|
|
300
|
+
```typescript
|
|
301
|
+
import { TableAPIRequest } from '@sonisoft/now-sdk-ext-core';
|
|
302
|
+
|
|
303
|
+
const tableAPI = new TableAPIRequest(instance);
|
|
304
|
+
|
|
305
|
+
// Create a record
|
|
306
|
+
const createResponse = await tableAPI.post('incident', {}, {
|
|
307
|
+
short_description: 'Test incident',
|
|
308
|
+
urgency: '2',
|
|
309
|
+
impact: '2'
|
|
310
|
+
});
|
|
311
|
+
|
|
312
|
+
// Read records
|
|
313
|
+
const readResponse = await tableAPI.get('incident', {
|
|
314
|
+
sysparm_query: 'active=true',
|
|
315
|
+
sysparm_limit: 10
|
|
316
|
+
});
|
|
317
|
+
|
|
318
|
+
// Update a record
|
|
319
|
+
const updateResponse = await tableAPI.put('incident', 'sys_id_here', {
|
|
320
|
+
state: '6', // Resolved
|
|
321
|
+
close_notes: 'Issue resolved'
|
|
322
|
+
});
|
|
323
|
+
|
|
324
|
+
// Partial update
|
|
325
|
+
const patchResponse = await tableAPI.patch('incident', 'sys_id_here', {
|
|
326
|
+
work_notes: 'Added update via API'
|
|
327
|
+
});
|
|
328
|
+
```
|
|
329
|
+
|
|
330
|
+
### 6. Background Script Execution
|
|
331
|
+
|
|
332
|
+
Execute server-side GlideScript with full control.
|
|
333
|
+
|
|
334
|
+
```typescript
|
|
335
|
+
import { BackgroundScriptExecutor } from '@sonisoft/now-sdk-ext-core';
|
|
336
|
+
|
|
337
|
+
const executor = new BackgroundScriptExecutor(instance, 'global');
|
|
338
|
+
|
|
339
|
+
// Execute script
|
|
340
|
+
const result = await executor.executeScript(`
|
|
341
|
+
var gr = new GlideRecord('sys_user');
|
|
342
|
+
gr.addQuery('active', true);
|
|
343
|
+
gr.addQuery('last_login', '>', gs.daysAgoStart(30));
|
|
344
|
+
gr.query();
|
|
345
|
+
|
|
346
|
+
var count = gr.getRowCount();
|
|
347
|
+
gs.info('Active users (last 30 days): ' + count);
|
|
348
|
+
|
|
349
|
+
return count;
|
|
350
|
+
`);
|
|
351
|
+
|
|
352
|
+
console.log('Script output:', result.output);
|
|
353
|
+
console.log('Return value:', result.result);
|
|
354
|
+
```
|
|
355
|
+
|
|
356
|
+
## ๐ API Reference
|
|
357
|
+
|
|
358
|
+
### Core Classes
|
|
359
|
+
|
|
360
|
+
- **`ServiceNowInstance`** - Instance connection and configuration
|
|
361
|
+
- **`ServiceNowRequest`** - HTTP request handling with authentication
|
|
362
|
+
- **`TableAPIRequest`** - ServiceNow Table API wrapper
|
|
363
|
+
|
|
364
|
+
### Application Management
|
|
365
|
+
|
|
366
|
+
- **`ApplicationManager`** - High-level application management
|
|
367
|
+
- **`AppRepoApplication`** - App repository operations
|
|
368
|
+
- **`BatchDefinition`** - Batch installation definitions
|
|
369
|
+
- **`CompanyApplications`** - Company application queries
|
|
370
|
+
|
|
371
|
+
### Testing & Automation
|
|
372
|
+
|
|
373
|
+
- **`ATFTestExecutor`** - ATF test execution and monitoring
|
|
374
|
+
- **`BackgroundScriptExecutor`** - Server-side script execution
|
|
375
|
+
|
|
376
|
+
### Logging & Monitoring
|
|
377
|
+
|
|
378
|
+
- **`SyslogReader`** - Log querying and real-time monitoring
|
|
379
|
+
- **`AMBClient`** - Real-time event subscriptions
|
|
380
|
+
- **`MessageClientBuilder`** - AMB client configuration
|
|
381
|
+
|
|
382
|
+
### Utilities
|
|
383
|
+
|
|
384
|
+
- **`Logger`** - Winston-based logging
|
|
385
|
+
- **`NowStringUtil`** - String manipulation utilities
|
|
386
|
+
- **`AppUtil`** - Application utility functions
|
|
387
|
+
|
|
388
|
+
## ๐ฏ Use Cases
|
|
389
|
+
|
|
390
|
+
### CI/CD Pipeline Integration
|
|
391
|
+
|
|
392
|
+
```typescript
|
|
393
|
+
// Install required apps before deployment
|
|
394
|
+
const appManager = new ApplicationManager(instance);
|
|
395
|
+
await appManager.installBatch('./required-apps.json');
|
|
396
|
+
|
|
397
|
+
// Run tests
|
|
398
|
+
const testExecutor = new ATFTestExecutor(instance);
|
|
399
|
+
const testResults = await testExecutor.executeTestSuite('deployment_test_suite');
|
|
400
|
+
|
|
401
|
+
if (testResults.testsPassedCount !== testResults.totalTests) {
|
|
402
|
+
throw new Error('Tests failed, aborting deployment');
|
|
403
|
+
}
|
|
404
|
+
```
|
|
405
|
+
|
|
406
|
+
### Log Analysis & Monitoring
|
|
407
|
+
|
|
408
|
+
```typescript
|
|
409
|
+
// Real-time error monitoring with alerts
|
|
410
|
+
const syslogReader = new SyslogReader(instance);
|
|
411
|
+
|
|
412
|
+
await syslogReader.startTailing('syslog', {
|
|
413
|
+
query: 'level=error',
|
|
414
|
+
onLog: async (log) => {
|
|
415
|
+
if (log.message.includes('OutOfMemory')) {
|
|
416
|
+
await sendPageAlert('Critical: OOM detected');
|
|
417
|
+
}
|
|
418
|
+
await saveToElasticsearch(log);
|
|
419
|
+
}
|
|
420
|
+
});
|
|
421
|
+
```
|
|
422
|
+
|
|
423
|
+
### Data Migration Scripts
|
|
424
|
+
|
|
425
|
+
```typescript
|
|
426
|
+
const executor = new BackgroundScriptExecutor(instance, 'global');
|
|
427
|
+
const tableAPI = new TableAPIRequest(instance);
|
|
428
|
+
|
|
429
|
+
// Export data
|
|
430
|
+
const response = await tableAPI.get('custom_table', {
|
|
431
|
+
sysparm_limit: 1000,
|
|
432
|
+
sysparm_query: 'sys_created_on>2024-01-01'
|
|
433
|
+
});
|
|
434
|
+
|
|
435
|
+
// Process and transform
|
|
436
|
+
const records = response.bodyObject.result;
|
|
437
|
+
// ... transformation logic ...
|
|
438
|
+
|
|
439
|
+
// Import to another instance
|
|
440
|
+
for (const record of transformedRecords) {
|
|
441
|
+
await targetTableAPI.post('target_table', {}, record);
|
|
442
|
+
}
|
|
443
|
+
```
|
|
444
|
+
|
|
445
|
+
## ๐ Command-Line Tools
|
|
446
|
+
|
|
447
|
+
The library includes ready-to-use CLI tools:
|
|
448
|
+
|
|
449
|
+
### Log Tailing (ChannelAjax)
|
|
450
|
+
```bash
|
|
451
|
+
node docs/examples/syslog-tail-channel.mjs your-instance ./logs/tail.log 1000
|
|
452
|
+
```
|
|
453
|
+
|
|
454
|
+
### Log Tailing (Table API)
|
|
455
|
+
```bash
|
|
456
|
+
node docs/examples/syslog-tail.mjs your-instance error ./logs/errors.log
|
|
457
|
+
```
|
|
458
|
+
|
|
459
|
+
## ๐ Documentation
|
|
460
|
+
|
|
461
|
+
Comprehensive documentation is available in the `/docs` directory:
|
|
462
|
+
|
|
463
|
+
- **[Getting Started](./docs/GettingStarted.md)** - Setup and basic usage
|
|
464
|
+
- **[API Reference](./docs/APIReference.md)** - Complete API documentation
|
|
465
|
+
- **[Application Manager](./docs/ApplicationManager.md)** - Application management guide
|
|
466
|
+
- **[ATF Test Executor](./docs/ATFTestExecutor.md)** - Testing automation
|
|
467
|
+
- **[Syslog Reader](./docs/SyslogReader.md)** - Log monitoring guide
|
|
468
|
+
- **[ChannelAjax Tailing](./docs/SyslogReaderChannelAjax.md)** - Advanced log tailing
|
|
469
|
+
- **[AMB Guide](./docs/AMB_FIX_SUMMARY.md)** - Real-time event monitoring
|
|
470
|
+
- **[Examples](./docs/examples/)** - Working code examples
|
|
471
|
+
|
|
472
|
+
## ๐ง Advanced Configuration
|
|
473
|
+
|
|
474
|
+
### Custom Request Handlers
|
|
475
|
+
|
|
476
|
+
```typescript
|
|
477
|
+
import { RequestHandler, ServiceNowInstance } from '@sonisoft/now-sdk-ext-core';
|
|
478
|
+
|
|
479
|
+
const handler = new RequestHandler(instance, {
|
|
480
|
+
timeout: 30000,
|
|
481
|
+
maxRetries: 3,
|
|
482
|
+
retryDelay: 1000
|
|
483
|
+
});
|
|
484
|
+
```
|
|
485
|
+
|
|
486
|
+
### Custom Logging
|
|
487
|
+
|
|
488
|
+
```typescript
|
|
489
|
+
import { Logger } from '@sonisoft/now-sdk-ext-core';
|
|
490
|
+
|
|
491
|
+
const logger = Logger.createLogger('MyApp');
|
|
492
|
+
logger.info('Application started');
|
|
493
|
+
logger.error('Error occurred', { details: errorObj });
|
|
494
|
+
```
|
|
495
|
+
|
|
496
|
+
### Authentication Handler
|
|
497
|
+
|
|
498
|
+
```typescript
|
|
499
|
+
import { NowSDKAuthenticationHandler } from '@sonisoft/now-sdk-ext-core';
|
|
500
|
+
|
|
501
|
+
const authHandler = new NowSDKAuthenticationHandler(
|
|
502
|
+
'instance-alias',
|
|
503
|
+
credential
|
|
504
|
+
);
|
|
505
|
+
|
|
506
|
+
const token = await authHandler.getToken();
|
|
507
|
+
```
|
|
508
|
+
|
|
509
|
+
## ๐ค TypeScript Support
|
|
510
|
+
|
|
511
|
+
The library is written in TypeScript and includes full type definitions:
|
|
512
|
+
|
|
513
|
+
```typescript
|
|
514
|
+
import type {
|
|
515
|
+
ServiceNowInstance,
|
|
516
|
+
SyslogRecord,
|
|
517
|
+
ATFTestResult,
|
|
518
|
+
ApplicationDetailModel,
|
|
519
|
+
BatchDefinition
|
|
520
|
+
} from '@sonisoft/now-sdk-ext-core';
|
|
521
|
+
```
|
|
522
|
+
|
|
523
|
+
## ๐ Error Handling
|
|
524
|
+
|
|
525
|
+
```typescript
|
|
526
|
+
import {
|
|
527
|
+
FileException,
|
|
528
|
+
InvalidParameterException
|
|
529
|
+
} from '@sonisoft/now-sdk-ext-core';
|
|
530
|
+
|
|
531
|
+
try {
|
|
532
|
+
await appManager.installBatch('./batch.json');
|
|
533
|
+
} catch (error) {
|
|
534
|
+
if (error instanceof FileException) {
|
|
535
|
+
console.error('File not found:', error.message);
|
|
536
|
+
} else if (error instanceof InvalidParameterException) {
|
|
537
|
+
console.error('Invalid parameter:', error.message);
|
|
538
|
+
} else {
|
|
539
|
+
console.error('Unexpected error:', error);
|
|
540
|
+
}
|
|
541
|
+
}
|
|
542
|
+
```
|
|
543
|
+
|
|
544
|
+
## โก Performance Tips
|
|
545
|
+
|
|
546
|
+
1. **Use ChannelAjax for log tailing** - 5x faster than Table API polling
|
|
547
|
+
2. **Batch operations** - Group multiple API calls when possible
|
|
548
|
+
3. **Adjust poll intervals** - Balance responsiveness vs. API load
|
|
549
|
+
4. **Use encoded queries** - Server-side filtering is more efficient
|
|
550
|
+
5. **Implement retry logic** - Handle transient network issues
|
|
551
|
+
|
|
552
|
+
## ๐ Security Best Practices
|
|
553
|
+
|
|
554
|
+
1. **Never hardcode credentials** - Use ServiceNow CLI authentication
|
|
555
|
+
2. **Use environment variables** - For configuration
|
|
556
|
+
3. **Implement role-based access** - Verify user permissions
|
|
557
|
+
4. **Audit API usage** - Log all operations
|
|
558
|
+
5. **Use HTTPS** - Always use secure connections
|
|
559
|
+
|
|
560
|
+
## ๐ฆ Dependencies
|
|
561
|
+
|
|
562
|
+
- `@servicenow/sdk` - ServiceNow SDK
|
|
563
|
+
- `@servicenow/sdk-cli` - ServiceNow CLI tools
|
|
564
|
+
- `cometd` - WebSocket support for AMB
|
|
565
|
+
- `xml2js` - XML parsing
|
|
566
|
+
- `winston` - Logging
|
|
567
|
+
- `axios` - HTTP client
|
|
568
|
+
|
|
569
|
+
## ๐งช Testing
|
|
570
|
+
|
|
571
|
+
```bash
|
|
572
|
+
# Run all tests
|
|
573
|
+
npm test
|
|
574
|
+
|
|
575
|
+
# Run specific test suite
|
|
576
|
+
npm test -- --testPathPattern=SyslogReader
|
|
577
|
+
|
|
578
|
+
# Run with coverage
|
|
579
|
+
npm test -- --coverage
|
|
580
|
+
```
|
|
581
|
+
|
|
582
|
+
## ๐๏ธ Building from Source
|
|
583
|
+
|
|
584
|
+
```bash
|
|
585
|
+
# Clone the repository
|
|
586
|
+
git clone <repository-url>
|
|
587
|
+
|
|
588
|
+
# Install dependencies
|
|
589
|
+
npm install
|
|
590
|
+
|
|
591
|
+
# Build TypeScript
|
|
592
|
+
npm run buildts
|
|
593
|
+
|
|
594
|
+
# Run tests
|
|
595
|
+
npm test
|
|
596
|
+
|
|
597
|
+
# Create package
|
|
598
|
+
npm pack
|
|
599
|
+
```
|
|
600
|
+
|
|
601
|
+
## ๐ License
|
|
602
|
+
|
|
603
|
+
MIT License - see LICENSE file for details
|
|
604
|
+
|
|
605
|
+
## ๐ Contributing
|
|
606
|
+
|
|
607
|
+
Contributions are welcome! Please:
|
|
608
|
+
|
|
609
|
+
1. Fork the repository
|
|
610
|
+
2. Create a feature branch
|
|
611
|
+
3. Make your changes with tests
|
|
612
|
+
4. Submit a pull request
|
|
613
|
+
|
|
614
|
+
## ๐ Support
|
|
615
|
+
|
|
616
|
+
For issues, questions, or contributions:
|
|
617
|
+
|
|
618
|
+
- ๐ง Create an issue in the repository
|
|
619
|
+
- ๐ Check the documentation in `/docs`
|
|
620
|
+
- ๐ฌ Review existing examples in `/docs/examples`
|
|
621
|
+
|
|
622
|
+
## ๐บ๏ธ Roadmap
|
|
623
|
+
|
|
624
|
+
- [ ] GraphQL API support
|
|
625
|
+
- [ ] Webhook integration
|
|
626
|
+
- [ ] Enhanced batch operations
|
|
627
|
+
- [ ] Performance metrics
|
|
628
|
+
- [ ] CLI tool package
|
|
629
|
+
- [ ] Plugin development tools
|
|
630
|
+
|
|
631
|
+
## ๐ Version History
|
|
632
|
+
|
|
633
|
+
See [CHANGELOG](./CHANGELOG.md) for version history and release notes.
|
|
634
|
+
|
|
635
|
+
---
|
|
636
|
+
|
|
637
|
+
**Made with โค๏ธ for the ServiceNow Developer Community**
|
|
@@ -67,12 +67,32 @@ export class RequestHandler {
|
|
|
67
67
|
// rest: { method: request.method }
|
|
68
68
|
// }
|
|
69
69
|
const resp = await makeRequest(config);
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
70
|
+
let responseBodyString = null;
|
|
71
|
+
if (!resp.ok) {
|
|
72
|
+
try {
|
|
73
|
+
responseBodyString = await resp.text();
|
|
74
|
+
}
|
|
75
|
+
catch (e) {
|
|
76
|
+
responseBodyString = null;
|
|
77
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
|
|
78
|
+
this._logger.error("Error parsing response body.", { error: e });
|
|
79
|
+
}
|
|
80
|
+
this._logger.error("Error during request.", { error: resp, request: request });
|
|
81
|
+
this._logger.error("Response Details:", { body: responseBodyString, status: resp.status });
|
|
82
|
+
throw new Error("Error during request. Status: " + resp.status + " Body: " + (responseBodyString !== null ? responseBodyString : "[no response body]"));
|
|
83
|
+
}
|
|
84
|
+
else {
|
|
85
|
+
try {
|
|
86
|
+
responseBodyString = await resp.text();
|
|
87
|
+
}
|
|
88
|
+
catch (e) {
|
|
89
|
+
responseBodyString = null;
|
|
90
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
|
|
91
|
+
this._logger.error("Error parsing response body.", { error: e });
|
|
92
|
+
}
|
|
93
|
+
}
|
|
73
94
|
// let responseBodyReader = resp.body.getReader();
|
|
74
95
|
// let responseBody = await responseBodyReader.read();
|
|
75
|
-
const responseBodyString = await resp.text();
|
|
76
96
|
if (responseBodyString) {
|
|
77
97
|
//const xml = await ( parseXml)(responseBodyString);
|
|
78
98
|
//const answer = xml['xml']['@_answer'];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RequestHandler.js","sourceRoot":"","sources":["../../../src/comm/http/RequestHandler.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAK9C,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAqB,MAAM,6CAA6C,CAAC;AAE7F,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AAEnC,wCAAwC;AAExC,MAAM,OAAO,cAAc;IAEvB,OAAO,GAAU,IAAI,MAAM,CAAC,gBAAgB,CAAC,CAAC;IAC9C,yCAAyC;IACzC,2BAA2B;IAC3B,QAAQ,CAAW;IAEnB,YAAY,CAAc;IAC1B,YAAY,CAAwB;IAEpC,QAAQ,CAAM;IAEd;;;OAGG;IACH,YAAmB,WAAkC;QACjD,sDAAsD;QACvD,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC;QAE/B,gDAAgD;QAChD,2DAA2D;QAC3D,oCAAoC;QACpC,mCAAmC;QACnC,6BAA6B;QAC7B,2EAA2E;QAC3E,QAAQ;QAER,6CAA6C;IAEhD,CAAC;IAIK,UAAU,CAAC,OAAY;QAC1B,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;IAC5B,CAAC;IAED,mFAAmF;IAEnF,6CAA6C;IAC7C,4FAA4F;IAC5F,iEAAiE;IACjE,QAAQ;IACR,+DAA+D;IAC/D,8CAA8C;IAC9C,IAAI;IAGJ,gBAAgB,CAAC,SAAS;QACtB,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAI,SAAS,EAAE,CAAC;YAC/B,MAAM,MAAM,GAAG,MAAM,CAAC,eAAe,CAAC,SAAS,EAAE,iBAAiB,CAAC,CAAC;YAEpE,2BAA2B;YAC3B,MAAM,WAAW,GAAG,MAAM,CAAC,oBAAoB,CAAC,aAAa,CAAC,CAAC;YAC/D,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC3B,kDAAkD;gBAClD,OAAO,KAAK,CAAC;YACf,CAAC;YAED,6DAA6D;YAC7D,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,8CAA8C;YAC9C,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAEK,KAAK,CAAC,SAAS,CAAI,OAAoB;QAC3C,IAAI,QAAQ,GAAmB,IAAI,CAAC;QACrC,MAAM,EAAC,MAAM,EAAC,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;QACtD,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,yBAAyB,EAAE,EAAC,MAAM,EAAC,MAAM,EAAC,CAAC,CAAC;QAC/D,mFAAmF;QAClF,eAAe;QACf,2BAA2B;QAC3B,iBAAiB;QACjB,uCAAuC;QACvC,IAAI;QAEJ,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,MAAM,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"RequestHandler.js","sourceRoot":"","sources":["../../../src/comm/http/RequestHandler.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,6 +9,8 @@ export declare class TableAPIRequest {
|
|
|
9
9
|
constructor(instance: IServiceNowInstance);
|
|
10
10
|
get<T>(tableName: string, query: object): Promise<IHttpResponse<T>>;
|
|
11
11
|
post<T>(tableName: string, query: object, body: object): Promise<IHttpResponse<T>>;
|
|
12
|
+
put<T>(tableName: string, sysId: string, body: object): Promise<IHttpResponse<T>>;
|
|
13
|
+
patch<T>(tableName: string, sysId: string, body: object): Promise<IHttpResponse<T>>;
|
|
12
14
|
private _doRequest;
|
|
13
15
|
private replaceVar;
|
|
14
16
|
}
|
|
@@ -23,6 +23,14 @@ export class TableAPIRequest {
|
|
|
23
23
|
const uri = this.replaceVar(this._apiBase, { table_name: tableName });
|
|
24
24
|
return await this._doRequest(uri, "post", query, body);
|
|
25
25
|
}
|
|
26
|
+
async put(tableName, sysId, body) {
|
|
27
|
+
const uri = this.replaceVar(this._apiBase, { table_name: tableName }) + '/' + sysId;
|
|
28
|
+
return await this._doRequest(uri, "put", null, body);
|
|
29
|
+
}
|
|
30
|
+
async patch(tableName, sysId, body) {
|
|
31
|
+
const uri = this.replaceVar(this._apiBase, { table_name: tableName }) + '/' + sysId;
|
|
32
|
+
return await this._doRequest(uri, "patch", null, body);
|
|
33
|
+
}
|
|
26
34
|
async _doRequest(uri, httpMethod, query, bodyData) {
|
|
27
35
|
let resp = null;
|
|
28
36
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TableAPIRequest.js","sourceRoot":"","sources":["../../../src/comm/http/TableAPIRequest.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAExD,MAAM,OAAO,eAAe;IAEhB,QAAQ,GAAU;QACtB,cAAc,EAAC,kBAAkB;QACjC,QAAQ,EAAE,kBAAkB;KAC/B,CAAC;IAEM,QAAQ,GAAG,6BAA6B,CAAC;IAEzC,WAAW,CAAsB;IACzC,IAAW,UAAU;QACjB,OAAO,IAAI,CAAC,WAAW,CAAC;IAC5B,CAAC;IACD,IAAW,UAAU,CAAC,KAA0B;QAC5C,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;IAC7B,CAAC;IAED,YAAmB,QAA4B;QAC3C,IAAI,CAAC,UAAU,GAAG,QAAQ,CAAC;IAC/B,CAAC;IAEM,KAAK,CAAC,GAAG,CAAI,SAAgB,EAAE,KAAY;QAE9C,MAAM,GAAG,GAAU,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAC,UAAU,EAAC,SAAS,EAAC,CAAC,CAAC;QAE1E,OAAO,MAAM,IAAI,CAAC,UAAU,CAAI,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;IAC7D,CAAC;IAEM,KAAK,CAAC,IAAI,CAAI,SAAgB,EAAE,KAAY,EAAE,IAAW;QAE5D,MAAM,GAAG,GAAU,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAC,UAAU,EAAC,SAAS,EAAC,CAAC,CAAC;QAE1E,OAAO,MAAM,IAAI,CAAC,UAAU,CAAI,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;IAC9D,CAAC;IAEO,KAAK,CAAC,UAAU,CAAI,GAAU,EAAE,UAAiB,EAAE,KAAoB,EAAE,QAAsB;QACnG,IAAI,IAAI,GAAoB,IAAI,CAAC;QAEjC,IAAG,CAAC;YACA,MAAM,GAAG,GAAqB,IAAI,iBAAiB,CAAC,IAAI,CAAC,UAAgC,CAAC,CAAC;YAE3F,MAAM,OAAO,GAAe,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAC,QAAQ,EAAC,CAAC;YAClH,IAAI,GAAG,MAAM,GAAG,CAAC,cAAc,CAAI,OAAO,CAAC,CAAC;QAChD,CAAC;QAAA,OAAM,GAAG,EAAC,CAAC;YACR,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACrB,CAAC;QAED,OAAO,IAAI,CAAC;IAChB,CAAC;IAGO,UAAU,CAAC,aAAoB,EAAE,SAAgB;QACtD,IAAI,YAAY,GAAU,aAAa,CAAC;QACvC,KAAI,MAAM,IAAI,IAAI,SAAS,EAAC,CAAC;YACzB,YAAY,GAAG,YAAY,CAAC,OAAO,CAAC,GAAG,GAAC,IAAI,GAAC,GAAG,EAAE,SAAS,CAAC,IAAI,CAAW,CAAC,CAAC;QACjF,CAAC;QAED,OAAO,YAAY,CAAC;IACxB,CAAC;CACJ"}
|
|
1
|
+
{"version":3,"file":"TableAPIRequest.js","sourceRoot":"","sources":["../../../src/comm/http/TableAPIRequest.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,9 +9,11 @@ export declare class SyslogReader {
|
|
|
9
9
|
private readonly SYSLOG_APP_SCOPE_TABLE;
|
|
10
10
|
private _logger;
|
|
11
11
|
private _tableAPI;
|
|
12
|
+
private _processorRequest;
|
|
12
13
|
private _instance;
|
|
13
14
|
private _tailInterval?;
|
|
14
15
|
private _lastFetchedSysId?;
|
|
16
|
+
private _lastSequence?;
|
|
15
17
|
private _isTailing;
|
|
16
18
|
constructor(instance: ServiceNowInstance);
|
|
17
19
|
/**
|
|
@@ -70,6 +72,42 @@ export declare class SyslogReader {
|
|
|
70
72
|
* @param options Tail options including query, interval, and callbacks
|
|
71
73
|
*/
|
|
72
74
|
startTailing(tableName?: 'syslog' | 'syslog_app_scope', options?: SyslogTailOptions): Promise<void>;
|
|
75
|
+
/**
|
|
76
|
+
* Tail ServiceNow logs using the ChannelAjax logtail processor
|
|
77
|
+
* This is more efficient than polling the table API as it uses sequence numbers
|
|
78
|
+
* @param options Tail options including interval and callbacks
|
|
79
|
+
*/
|
|
80
|
+
startTailingWithChannelAjax(options?: Omit<SyslogTailOptions, 'query' | 'initialLimit'>): Promise<void>;
|
|
81
|
+
/**
|
|
82
|
+
* Fetch logs from the ChannelAjax logtail processor
|
|
83
|
+
* @returns Array of log tail items
|
|
84
|
+
*/
|
|
85
|
+
private fetchLogsFromChannelAjax;
|
|
86
|
+
/**
|
|
87
|
+
* Parse XML response from ChannelAjax logtail
|
|
88
|
+
* @param xmlData XML string from response
|
|
89
|
+
* @returns Parsed LogTailResponse
|
|
90
|
+
*/
|
|
91
|
+
private parseLogTailXml;
|
|
92
|
+
/**
|
|
93
|
+
* Format a LogTailItem for console output
|
|
94
|
+
* @param item Log tail item
|
|
95
|
+
* @returns Formatted string
|
|
96
|
+
*/
|
|
97
|
+
private formatLogTailItem;
|
|
98
|
+
/**
|
|
99
|
+
* Convert LogTailItem to SyslogRecord format
|
|
100
|
+
* @param item Log tail item
|
|
101
|
+
* @returns SyslogRecord
|
|
102
|
+
*/
|
|
103
|
+
private logTailItemToSyslogRecord;
|
|
104
|
+
/**
|
|
105
|
+
* Save text content to a file
|
|
106
|
+
* @param content Text content to save
|
|
107
|
+
* @param filePath File path
|
|
108
|
+
* @param append Whether to append
|
|
109
|
+
*/
|
|
110
|
+
private saveTextToFile;
|
|
73
111
|
/**
|
|
74
112
|
* Stop tailing logs
|
|
75
113
|
*/
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { Logger } from "../../util/Logger.js";
|
|
2
2
|
import { TableAPIRequest } from "../../comm/http/TableAPIRequest.js";
|
|
3
|
+
import { ServiceNowProcessorRequest } from "../../comm/http/ServiceNowProcessorRequest.js";
|
|
4
|
+
import { Parser } from 'xml2js';
|
|
3
5
|
import * as fs from 'fs';
|
|
4
6
|
import * as path from 'path';
|
|
5
7
|
/**
|
|
@@ -11,13 +13,16 @@ export class SyslogReader {
|
|
|
11
13
|
SYSLOG_APP_SCOPE_TABLE = 'syslog_app_scope';
|
|
12
14
|
_logger = new Logger("SyslogReader");
|
|
13
15
|
_tableAPI;
|
|
16
|
+
_processorRequest;
|
|
14
17
|
_instance;
|
|
15
18
|
_tailInterval;
|
|
16
19
|
_lastFetchedSysId;
|
|
20
|
+
_lastSequence;
|
|
17
21
|
_isTailing = false;
|
|
18
22
|
constructor(instance) {
|
|
19
23
|
this._instance = instance;
|
|
20
24
|
this._tableAPI = new TableAPIRequest(instance);
|
|
25
|
+
this._processorRequest = new ServiceNowProcessorRequest(instance);
|
|
21
26
|
}
|
|
22
27
|
/**
|
|
23
28
|
* Query the syslog table with an encoded query string
|
|
@@ -262,6 +267,174 @@ export class SyslogReader {
|
|
|
262
267
|
}, interval);
|
|
263
268
|
console.log(`\n๐ Tailing ${tableName} table (press Ctrl+C to stop)...`);
|
|
264
269
|
}
|
|
270
|
+
/**
|
|
271
|
+
* Tail ServiceNow logs using the ChannelAjax logtail processor
|
|
272
|
+
* This is more efficient than polling the table API as it uses sequence numbers
|
|
273
|
+
* @param options Tail options including interval and callbacks
|
|
274
|
+
*/
|
|
275
|
+
async startTailingWithChannelAjax(options = {}) {
|
|
276
|
+
if (this._isTailing) {
|
|
277
|
+
throw new Error('Already tailing logs. Stop current tail before starting a new one.');
|
|
278
|
+
}
|
|
279
|
+
const { interval = 1000, // Poll every 1 second by default
|
|
280
|
+
onLog, formatOptions, outputFile, append = true } = options;
|
|
281
|
+
this._isTailing = true;
|
|
282
|
+
this._logger.info(`Starting to tail logs using ChannelAjax with ${interval}ms interval`);
|
|
283
|
+
// Fetch initial logs to get starting sequence
|
|
284
|
+
const initialLogs = await this.fetchLogsFromChannelAjax();
|
|
285
|
+
if (initialLogs && initialLogs.length > 0) {
|
|
286
|
+
console.log('\n=== Initial Logs ===');
|
|
287
|
+
initialLogs.forEach(item => {
|
|
288
|
+
const formattedLog = this.formatLogTailItem(item);
|
|
289
|
+
console.log(formattedLog);
|
|
290
|
+
if (onLog) {
|
|
291
|
+
// Convert LogTailItem to SyslogRecord format for callback
|
|
292
|
+
const syslogRecord = this.logTailItemToSyslogRecord(item);
|
|
293
|
+
onLog(syslogRecord);
|
|
294
|
+
}
|
|
295
|
+
});
|
|
296
|
+
if (outputFile) {
|
|
297
|
+
const logText = initialLogs.map(item => this.formatLogTailItem(item)).join('\n');
|
|
298
|
+
this.saveTextToFile(logText, outputFile, append);
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
// Start polling for new logs
|
|
302
|
+
this._tailInterval = setInterval(async () => {
|
|
303
|
+
try {
|
|
304
|
+
const newLogs = await this.fetchLogsFromChannelAjax();
|
|
305
|
+
if (newLogs && newLogs.length > 0) {
|
|
306
|
+
newLogs.forEach(item => {
|
|
307
|
+
const formattedLog = this.formatLogTailItem(item);
|
|
308
|
+
console.log(formattedLog);
|
|
309
|
+
if (onLog) {
|
|
310
|
+
const syslogRecord = this.logTailItemToSyslogRecord(item);
|
|
311
|
+
onLog(syslogRecord);
|
|
312
|
+
}
|
|
313
|
+
});
|
|
314
|
+
if (outputFile) {
|
|
315
|
+
const logText = newLogs.map(item => this.formatLogTailItem(item)).join('\n');
|
|
316
|
+
this.saveTextToFile(logText, outputFile, true);
|
|
317
|
+
}
|
|
318
|
+
}
|
|
319
|
+
}
|
|
320
|
+
catch (error) {
|
|
321
|
+
this._logger.error(`Error while tailing: ${error}`);
|
|
322
|
+
}
|
|
323
|
+
}, interval);
|
|
324
|
+
console.log(`\n๐ Tailing logs via ChannelAjax (press Ctrl+C to stop)...`);
|
|
325
|
+
}
|
|
326
|
+
/**
|
|
327
|
+
* Fetch logs from the ChannelAjax logtail processor
|
|
328
|
+
* @returns Array of log tail items
|
|
329
|
+
*/
|
|
330
|
+
async fetchLogsFromChannelAjax() {
|
|
331
|
+
const processorArgs = {
|
|
332
|
+
sysparm_type: 'read',
|
|
333
|
+
sysparm_value: this._lastSequence || '0',
|
|
334
|
+
sysparm_want_session_messages: 'true',
|
|
335
|
+
sysparm_silent_request: 'true',
|
|
336
|
+
sysparm_express_transaction: 'true',
|
|
337
|
+
'ni.nolog.x_referer': 'ignore',
|
|
338
|
+
'x_referer': 'channel.do?sysparm_channel=logtail'
|
|
339
|
+
};
|
|
340
|
+
const response = await this._processorRequest.doXmlHttpRequest('ChannelAjax', 'logtail', 'global', processorArgs);
|
|
341
|
+
if (response.status === 200) {
|
|
342
|
+
const xmlData = response.data;
|
|
343
|
+
const parsedData = await this.parseLogTailXml(xmlData);
|
|
344
|
+
if (parsedData) {
|
|
345
|
+
// Update the sequence for the next request
|
|
346
|
+
this._lastSequence = parsedData.channel_last_sequence;
|
|
347
|
+
return parsedData.item || [];
|
|
348
|
+
}
|
|
349
|
+
}
|
|
350
|
+
return [];
|
|
351
|
+
}
|
|
352
|
+
/**
|
|
353
|
+
* Parse XML response from ChannelAjax logtail
|
|
354
|
+
* @param xmlData XML string from response
|
|
355
|
+
* @returns Parsed LogTailResponse
|
|
356
|
+
*/
|
|
357
|
+
async parseLogTailXml(xmlData) {
|
|
358
|
+
return new Promise((resolve, reject) => {
|
|
359
|
+
const parser = new Parser({
|
|
360
|
+
explicitArray: false,
|
|
361
|
+
mergeAttrs: true
|
|
362
|
+
});
|
|
363
|
+
parser.parseString(xmlData, (err, result) => {
|
|
364
|
+
if (err) {
|
|
365
|
+
this._logger.error(`Error parsing XML: ${err}`);
|
|
366
|
+
reject(err);
|
|
367
|
+
return;
|
|
368
|
+
}
|
|
369
|
+
if (result && result.xml) {
|
|
370
|
+
const xmlRoot = result.xml;
|
|
371
|
+
const response = {
|
|
372
|
+
channel_last_sequence: xmlRoot.channel_last_sequence || '0',
|
|
373
|
+
client_last_sequence: xmlRoot.client_last_sequence || '0',
|
|
374
|
+
sysparm_max: xmlRoot.sysparm_max || '15',
|
|
375
|
+
item: []
|
|
376
|
+
};
|
|
377
|
+
// Handle both single item and array of items
|
|
378
|
+
if (xmlRoot.item) {
|
|
379
|
+
if (Array.isArray(xmlRoot.item)) {
|
|
380
|
+
response.item = xmlRoot.item;
|
|
381
|
+
}
|
|
382
|
+
else {
|
|
383
|
+
response.item = [xmlRoot.item];
|
|
384
|
+
}
|
|
385
|
+
}
|
|
386
|
+
resolve(response);
|
|
387
|
+
}
|
|
388
|
+
else {
|
|
389
|
+
resolve(null);
|
|
390
|
+
}
|
|
391
|
+
});
|
|
392
|
+
});
|
|
393
|
+
}
|
|
394
|
+
/**
|
|
395
|
+
* Format a LogTailItem for console output
|
|
396
|
+
* @param item Log tail item
|
|
397
|
+
* @returns Formatted string
|
|
398
|
+
*/
|
|
399
|
+
formatLogTailItem(item) {
|
|
400
|
+
const timestamp = new Date(parseInt(item.date));
|
|
401
|
+
const formattedDate = timestamp.toLocaleString();
|
|
402
|
+
return `[${formattedDate}] [${item.sequence}] ${item.message}`;
|
|
403
|
+
}
|
|
404
|
+
/**
|
|
405
|
+
* Convert LogTailItem to SyslogRecord format
|
|
406
|
+
* @param item Log tail item
|
|
407
|
+
* @returns SyslogRecord
|
|
408
|
+
*/
|
|
409
|
+
logTailItemToSyslogRecord(item) {
|
|
410
|
+
const timestamp = new Date(parseInt(item.date));
|
|
411
|
+
return {
|
|
412
|
+
sys_id: item.sequence, // Use sequence as ID
|
|
413
|
+
sys_created_on: timestamp.toISOString(),
|
|
414
|
+
level: 'info', // Default level as it's not provided in logtail
|
|
415
|
+
message: item.message,
|
|
416
|
+
source: 'logtail',
|
|
417
|
+
sequence: item.sequence
|
|
418
|
+
};
|
|
419
|
+
}
|
|
420
|
+
/**
|
|
421
|
+
* Save text content to a file
|
|
422
|
+
* @param content Text content to save
|
|
423
|
+
* @param filePath File path
|
|
424
|
+
* @param append Whether to append
|
|
425
|
+
*/
|
|
426
|
+
saveTextToFile(content, filePath, append) {
|
|
427
|
+
const dir = path.dirname(filePath);
|
|
428
|
+
if (!fs.existsSync(dir)) {
|
|
429
|
+
fs.mkdirSync(dir, { recursive: true });
|
|
430
|
+
}
|
|
431
|
+
if (append) {
|
|
432
|
+
fs.appendFileSync(filePath, content + '\n');
|
|
433
|
+
}
|
|
434
|
+
else {
|
|
435
|
+
fs.writeFileSync(filePath, content + '\n');
|
|
436
|
+
}
|
|
437
|
+
}
|
|
265
438
|
/**
|
|
266
439
|
* Stop tailing logs
|
|
267
440
|
*/
|
|
@@ -272,6 +445,7 @@ export class SyslogReader {
|
|
|
272
445
|
}
|
|
273
446
|
this._isTailing = false;
|
|
274
447
|
this._lastFetchedSysId = undefined;
|
|
448
|
+
this._lastSequence = undefined;
|
|
275
449
|
this._logger.info('Stopped tailing logs');
|
|
276
450
|
console.log('\nโ Stopped tailing logs');
|
|
277
451
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SyslogReader.js","sourceRoot":"","sources":["../../../src/sn/syslog/SyslogReader.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"SyslogReader.js","sourceRoot":"","sources":["../../../src/sn/syslog/SyslogReader.ts"],"names":[],"mappings":"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"}
|
|
@@ -84,3 +84,27 @@ export interface SyslogTailOptions {
|
|
|
84
84
|
/** Whether to append to existing file */
|
|
85
85
|
append?: boolean;
|
|
86
86
|
}
|
|
87
|
+
/**
|
|
88
|
+
* Represents a log item from the ChannelAjax logtail response
|
|
89
|
+
*/
|
|
90
|
+
export interface LogTailItem {
|
|
91
|
+
/** Timestamp in milliseconds */
|
|
92
|
+
date: string;
|
|
93
|
+
/** Log message */
|
|
94
|
+
message: string;
|
|
95
|
+
/** Sequence number for this log entry */
|
|
96
|
+
sequence: string;
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Response from ChannelAjax logtail processor
|
|
100
|
+
*/
|
|
101
|
+
export interface LogTailResponse {
|
|
102
|
+
/** Last sequence number from server */
|
|
103
|
+
channel_last_sequence: string;
|
|
104
|
+
/** Client's last sequence number */
|
|
105
|
+
client_last_sequence: string;
|
|
106
|
+
/** Maximum number of items to return */
|
|
107
|
+
sysparm_max: string;
|
|
108
|
+
/** Array of log items */
|
|
109
|
+
item: LogTailItem[];
|
|
110
|
+
}
|
package/package.json
CHANGED
|
@@ -1,9 +1,21 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sonisoft/now-sdk-ext-core",
|
|
3
|
-
"version": "2.0.0-alpha.
|
|
4
|
-
"description": "",
|
|
3
|
+
"version": "2.0.0-alpha.2",
|
|
4
|
+
"description": "Comprehensive TypeScript library extending ServiceNow SDK with application management, ATF testing, real-time log monitoring, AMB event subscriptions, and automation tools",
|
|
5
|
+
"keywords": [
|
|
6
|
+
"servicenow",
|
|
7
|
+
"sdk",
|
|
8
|
+
"automation",
|
|
9
|
+
"testing",
|
|
10
|
+
"atf",
|
|
11
|
+
"cicd",
|
|
12
|
+
"devops",
|
|
13
|
+
"logs",
|
|
14
|
+
"monitoring",
|
|
15
|
+
"typescript"
|
|
16
|
+
],
|
|
5
17
|
"repository": {
|
|
6
|
-
"type": "",
|
|
18
|
+
"type": "git",
|
|
7
19
|
"url": ""
|
|
8
20
|
},
|
|
9
21
|
"type": "module",
|
|
@@ -135,4 +147,4 @@
|
|
|
135
147
|
"engines": {
|
|
136
148
|
"node": ">=14.0.0"
|
|
137
149
|
}
|
|
138
|
-
}
|
|
150
|
+
}
|