node-consul-service 1.0.71 → 1.0.72
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/dist/index.cjs.js +48 -16
- package/dist/index.esm.js +48 -16
- package/dist/utils/slowCallLogger.d.ts +1 -0
- package/package.json +1 -1
package/dist/index.cjs.js
CHANGED
|
@@ -88,10 +88,10 @@ async function deregisterService(id) {
|
|
|
88
88
|
console.log(`🛑 Service "${id}" deregistered successfully.`);
|
|
89
89
|
}
|
|
90
90
|
|
|
91
|
-
const BASE_LOG_DIR$
|
|
91
|
+
const BASE_LOG_DIR$2 = '/home/log';
|
|
92
92
|
// اسم السيرفس الحالي اللي بيعمل الـ discovery
|
|
93
|
-
const CURRENT_SERVICE$
|
|
94
|
-
async function ensureLogDir$
|
|
93
|
+
const CURRENT_SERVICE$2 = process.env.SERVICE_NAME || 'unknown-service';
|
|
94
|
+
async function ensureLogDir$2(dir) {
|
|
95
95
|
await require$$6.promises.mkdir(dir, { recursive: true });
|
|
96
96
|
}
|
|
97
97
|
function formatLogLine(targetService, instance, elapsedMs) {
|
|
@@ -107,8 +107,8 @@ function formatLogLine(targetService, instance, elapsedMs) {
|
|
|
107
107
|
async function appendDiscoveryLog(targetService, instance, elapsedMs) {
|
|
108
108
|
try {
|
|
109
109
|
// فولدر خاص بالسيرفس الحالي
|
|
110
|
-
const serviceDir = path.join(BASE_LOG_DIR$
|
|
111
|
-
await ensureLogDir$
|
|
110
|
+
const serviceDir = path.join(BASE_LOG_DIR$2, CURRENT_SERVICE$2);
|
|
111
|
+
await ensureLogDir$2(serviceDir);
|
|
112
112
|
// اللوج يروح في ملف ثابت detect.log
|
|
113
113
|
const file = path.join(serviceDir, 'detect.log');
|
|
114
114
|
const line = formatLogLine(targetService, instance, elapsedMs);
|
|
@@ -145,7 +145,7 @@ function get$1(key) {
|
|
|
145
145
|
return record.value;
|
|
146
146
|
}
|
|
147
147
|
|
|
148
|
-
const CACHE_TTL =
|
|
148
|
+
const CACHE_TTL = 60000;
|
|
149
149
|
async function listServices() {
|
|
150
150
|
const cacheKey = 'services:list';
|
|
151
151
|
const cached = get$1(cacheKey);
|
|
@@ -20312,14 +20312,14 @@ const {
|
|
|
20312
20312
|
mergeConfig
|
|
20313
20313
|
} = axios;
|
|
20314
20314
|
|
|
20315
|
-
const BASE_LOG_DIR = '/home/log';
|
|
20316
|
-
const CURRENT_SERVICE = process.env.SERVICE_NAME || 'unknown-service';
|
|
20317
|
-
async function ensureLogDir(dir) {
|
|
20315
|
+
const BASE_LOG_DIR$1 = '/home/log';
|
|
20316
|
+
const CURRENT_SERVICE$1 = process.env.SERVICE_NAME || 'unknown-service';
|
|
20317
|
+
async function ensureLogDir$1(dir) {
|
|
20318
20318
|
await require$$6.promises.mkdir(dir, { recursive: true });
|
|
20319
20319
|
}
|
|
20320
20320
|
function getLogFileForStatus(status) {
|
|
20321
20321
|
const date = new Date().toISOString().split('T')[0]; // YYYY-MM-DD
|
|
20322
|
-
const serviceDir = path.join(BASE_LOG_DIR, CURRENT_SERVICE);
|
|
20322
|
+
const serviceDir = path.join(BASE_LOG_DIR$1, CURRENT_SERVICE$1);
|
|
20323
20323
|
if (status >= 200 && status < 300)
|
|
20324
20324
|
return path.join(serviceDir, `calls-2xx-${date}.log`);
|
|
20325
20325
|
if (status >= 400 && status < 500)
|
|
@@ -20331,13 +20331,13 @@ function getLogFileForStatus(status) {
|
|
|
20331
20331
|
function formatCallLogLine(targetService, url, method, status, elapsedMs, errorMessage) {
|
|
20332
20332
|
const ts = new Date().toISOString();
|
|
20333
20333
|
const errPart = errorMessage ? ` | Error="${errorMessage}"` : '';
|
|
20334
|
-
return `${ts} | Caller=${CURRENT_SERVICE} | Target=${targetService} | ${method.toUpperCase()} ${url} | Status=${status} | Elapsed=${elapsedMs}ms${errPart}\n`;
|
|
20334
|
+
return `${ts} | Caller=${CURRENT_SERVICE$1} | Target=${targetService} | ${method.toUpperCase()} ${url} | Status=${status} | Elapsed=${elapsedMs}ms${errPart}\n`;
|
|
20335
20335
|
}
|
|
20336
20336
|
async function appendCallLog(targetService, url, method, status, elapsedMs, errorMessage) {
|
|
20337
20337
|
try {
|
|
20338
20338
|
const file = getLogFileForStatus(status);
|
|
20339
20339
|
const dir = path.dirname(file);
|
|
20340
|
-
await ensureLogDir(dir);
|
|
20340
|
+
await ensureLogDir$1(dir);
|
|
20341
20341
|
const line = formatCallLogLine(targetService, url, method, status, elapsedMs, errorMessage);
|
|
20342
20342
|
await require$$6.promises.appendFile(file, line, { encoding: 'utf8' });
|
|
20343
20343
|
}
|
|
@@ -20346,18 +20346,48 @@ async function appendCallLog(targetService, url, method, status, elapsedMs, erro
|
|
|
20346
20346
|
}
|
|
20347
20347
|
}
|
|
20348
20348
|
|
|
20349
|
+
const BASE_LOG_DIR = '/home/log';
|
|
20350
|
+
const CURRENT_SERVICE = process.env.SERVICE_NAME || 'unknown-service';
|
|
20351
|
+
const THRESHOLD = Number(process.env.SLOW_CALL_THRESHOLD || 200); // الافتراضي 200ms
|
|
20352
|
+
async function ensureLogDir(dir) {
|
|
20353
|
+
await require$$6.promises.mkdir(dir, { recursive: true });
|
|
20354
|
+
}
|
|
20355
|
+
function getLogFile() {
|
|
20356
|
+
const serviceDir = path.join(BASE_LOG_DIR, CURRENT_SERVICE);
|
|
20357
|
+
return path.join(serviceDir, 'slow-calls.log');
|
|
20358
|
+
}
|
|
20359
|
+
function formatSlowCallLine(targetService, url, method, status, elapsedMs) {
|
|
20360
|
+
const ts = new Date().toISOString();
|
|
20361
|
+
return `${ts} | Caller=${CURRENT_SERVICE} | Target=${targetService} | ${method.toUpperCase()} ${url} | Status=${status} | Elapsed=${elapsedMs}ms\n`;
|
|
20362
|
+
}
|
|
20363
|
+
async function appendSlowCallLog(targetService, url, method, status, elapsedMs) {
|
|
20364
|
+
if (elapsedMs < THRESHOLD)
|
|
20365
|
+
return; // ما يكتبش غير اللي عدّى الحد
|
|
20366
|
+
try {
|
|
20367
|
+
const file = getLogFile();
|
|
20368
|
+
const dir = path.dirname(file);
|
|
20369
|
+
await ensureLogDir(dir);
|
|
20370
|
+
const line = formatSlowCallLine(targetService, url, method, status, elapsedMs);
|
|
20371
|
+
await require$$6.promises.appendFile(file, line, { encoding: 'utf8' });
|
|
20372
|
+
}
|
|
20373
|
+
catch (err) {
|
|
20374
|
+
console.error('❌ Failed to write slow call log:', err);
|
|
20375
|
+
}
|
|
20376
|
+
}
|
|
20377
|
+
|
|
20349
20378
|
async function callService(serviceName, options = {}) {
|
|
20350
20379
|
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
|
|
20351
20380
|
const { method = 'GET', path = '/', data, headers, params, } = options;
|
|
20352
20381
|
const start = Date.now();
|
|
20353
20382
|
try {
|
|
20354
|
-
// ...
|
|
20355
20383
|
const instance = await getRandomServiceInstance(serviceName);
|
|
20356
20384
|
const url = `http://${instance.ServiceAddress}:${instance.ServicePort}${path}`;
|
|
20357
20385
|
const response = await axios.request({ url, method, data, headers, params });
|
|
20358
20386
|
const elapsed = Date.now() - start;
|
|
20359
|
-
// سجل
|
|
20387
|
+
// 📌 سجل الكول
|
|
20360
20388
|
await appendCallLog(serviceName, url, method, response.status, elapsed);
|
|
20389
|
+
// 📌 لو بطيء → يتسجل في slow-calls.log
|
|
20390
|
+
await appendSlowCallLog(serviceName, url, method, response.status, elapsed);
|
|
20361
20391
|
return response.data;
|
|
20362
20392
|
}
|
|
20363
20393
|
catch (error) {
|
|
@@ -20366,13 +20396,15 @@ async function callService(serviceName, options = {}) {
|
|
|
20366
20396
|
const url = (_d = (_c = error.config) === null || _c === void 0 ? void 0 : _c.url) !== null && _d !== void 0 ? _d : '';
|
|
20367
20397
|
const methodUsed = (_f = (_e = error.config) === null || _e === void 0 ? void 0 : _e.method) !== null && _f !== void 0 ? _f : method;
|
|
20368
20398
|
const message = (_g = error.message) !== null && _g !== void 0 ? _g : 'Unknown error';
|
|
20369
|
-
// 📌 سجل الفشل
|
|
20399
|
+
// 📌 سجل الفشل
|
|
20370
20400
|
await appendCallLog(serviceName, url, methodUsed, status, elapsed, message);
|
|
20401
|
+
// 📌 لو بطيء → يتسجل برضه في slow-calls.log
|
|
20402
|
+
await appendSlowCallLog(serviceName, url, methodUsed, status, elapsed);
|
|
20371
20403
|
return {
|
|
20372
20404
|
success: false,
|
|
20373
20405
|
message,
|
|
20374
20406
|
status,
|
|
20375
|
-
code: (_k = (_j = (_h = error.response) === null || _h === void 0 ? void 0 : _h.data) === null || _j === void 0 ? void 0 : _j.code) !== null && _k !== void 0 ? _k :
|
|
20407
|
+
code: (_k = (_j = (_h = error.response) === null || _h === void 0 ? void 0 : _h.data) === null || _j === void 0 ? void 0 : _j.code) !== null && _k !== void 0 ? _k : '',
|
|
20376
20408
|
data: (_l = error.response) === null || _l === void 0 ? void 0 : _l.data,
|
|
20377
20409
|
};
|
|
20378
20410
|
}
|
package/dist/index.esm.js
CHANGED
|
@@ -86,10 +86,10 @@ async function deregisterService(id) {
|
|
|
86
86
|
console.log(`🛑 Service "${id}" deregistered successfully.`);
|
|
87
87
|
}
|
|
88
88
|
|
|
89
|
-
const BASE_LOG_DIR$
|
|
89
|
+
const BASE_LOG_DIR$2 = '/home/log';
|
|
90
90
|
// اسم السيرفس الحالي اللي بيعمل الـ discovery
|
|
91
|
-
const CURRENT_SERVICE$
|
|
92
|
-
async function ensureLogDir$
|
|
91
|
+
const CURRENT_SERVICE$2 = process.env.SERVICE_NAME || 'unknown-service';
|
|
92
|
+
async function ensureLogDir$2(dir) {
|
|
93
93
|
await promises.mkdir(dir, { recursive: true });
|
|
94
94
|
}
|
|
95
95
|
function formatLogLine(targetService, instance, elapsedMs) {
|
|
@@ -105,8 +105,8 @@ function formatLogLine(targetService, instance, elapsedMs) {
|
|
|
105
105
|
async function appendDiscoveryLog(targetService, instance, elapsedMs) {
|
|
106
106
|
try {
|
|
107
107
|
// فولدر خاص بالسيرفس الحالي
|
|
108
|
-
const serviceDir = path.join(BASE_LOG_DIR$
|
|
109
|
-
await ensureLogDir$
|
|
108
|
+
const serviceDir = path.join(BASE_LOG_DIR$2, CURRENT_SERVICE$2);
|
|
109
|
+
await ensureLogDir$2(serviceDir);
|
|
110
110
|
// اللوج يروح في ملف ثابت detect.log
|
|
111
111
|
const file = path.join(serviceDir, 'detect.log');
|
|
112
112
|
const line = formatLogLine(targetService, instance, elapsedMs);
|
|
@@ -143,7 +143,7 @@ function get$1(key) {
|
|
|
143
143
|
return record.value;
|
|
144
144
|
}
|
|
145
145
|
|
|
146
|
-
const CACHE_TTL =
|
|
146
|
+
const CACHE_TTL = 60000;
|
|
147
147
|
async function listServices() {
|
|
148
148
|
const cacheKey = 'services:list';
|
|
149
149
|
const cached = get$1(cacheKey);
|
|
@@ -20310,14 +20310,14 @@ const {
|
|
|
20310
20310
|
mergeConfig
|
|
20311
20311
|
} = axios;
|
|
20312
20312
|
|
|
20313
|
-
const BASE_LOG_DIR = '/home/log';
|
|
20314
|
-
const CURRENT_SERVICE = process.env.SERVICE_NAME || 'unknown-service';
|
|
20315
|
-
async function ensureLogDir(dir) {
|
|
20313
|
+
const BASE_LOG_DIR$1 = '/home/log';
|
|
20314
|
+
const CURRENT_SERVICE$1 = process.env.SERVICE_NAME || 'unknown-service';
|
|
20315
|
+
async function ensureLogDir$1(dir) {
|
|
20316
20316
|
await promises.mkdir(dir, { recursive: true });
|
|
20317
20317
|
}
|
|
20318
20318
|
function getLogFileForStatus(status) {
|
|
20319
20319
|
const date = new Date().toISOString().split('T')[0]; // YYYY-MM-DD
|
|
20320
|
-
const serviceDir = path.join(BASE_LOG_DIR, CURRENT_SERVICE);
|
|
20320
|
+
const serviceDir = path.join(BASE_LOG_DIR$1, CURRENT_SERVICE$1);
|
|
20321
20321
|
if (status >= 200 && status < 300)
|
|
20322
20322
|
return path.join(serviceDir, `calls-2xx-${date}.log`);
|
|
20323
20323
|
if (status >= 400 && status < 500)
|
|
@@ -20329,13 +20329,13 @@ function getLogFileForStatus(status) {
|
|
|
20329
20329
|
function formatCallLogLine(targetService, url, method, status, elapsedMs, errorMessage) {
|
|
20330
20330
|
const ts = new Date().toISOString();
|
|
20331
20331
|
const errPart = errorMessage ? ` | Error="${errorMessage}"` : '';
|
|
20332
|
-
return `${ts} | Caller=${CURRENT_SERVICE} | Target=${targetService} | ${method.toUpperCase()} ${url} | Status=${status} | Elapsed=${elapsedMs}ms${errPart}\n`;
|
|
20332
|
+
return `${ts} | Caller=${CURRENT_SERVICE$1} | Target=${targetService} | ${method.toUpperCase()} ${url} | Status=${status} | Elapsed=${elapsedMs}ms${errPart}\n`;
|
|
20333
20333
|
}
|
|
20334
20334
|
async function appendCallLog(targetService, url, method, status, elapsedMs, errorMessage) {
|
|
20335
20335
|
try {
|
|
20336
20336
|
const file = getLogFileForStatus(status);
|
|
20337
20337
|
const dir = path.dirname(file);
|
|
20338
|
-
await ensureLogDir(dir);
|
|
20338
|
+
await ensureLogDir$1(dir);
|
|
20339
20339
|
const line = formatCallLogLine(targetService, url, method, status, elapsedMs, errorMessage);
|
|
20340
20340
|
await promises.appendFile(file, line, { encoding: 'utf8' });
|
|
20341
20341
|
}
|
|
@@ -20344,18 +20344,48 @@ async function appendCallLog(targetService, url, method, status, elapsedMs, erro
|
|
|
20344
20344
|
}
|
|
20345
20345
|
}
|
|
20346
20346
|
|
|
20347
|
+
const BASE_LOG_DIR = '/home/log';
|
|
20348
|
+
const CURRENT_SERVICE = process.env.SERVICE_NAME || 'unknown-service';
|
|
20349
|
+
const THRESHOLD = Number(process.env.SLOW_CALL_THRESHOLD || 200); // الافتراضي 200ms
|
|
20350
|
+
async function ensureLogDir(dir) {
|
|
20351
|
+
await promises.mkdir(dir, { recursive: true });
|
|
20352
|
+
}
|
|
20353
|
+
function getLogFile() {
|
|
20354
|
+
const serviceDir = path.join(BASE_LOG_DIR, CURRENT_SERVICE);
|
|
20355
|
+
return path.join(serviceDir, 'slow-calls.log');
|
|
20356
|
+
}
|
|
20357
|
+
function formatSlowCallLine(targetService, url, method, status, elapsedMs) {
|
|
20358
|
+
const ts = new Date().toISOString();
|
|
20359
|
+
return `${ts} | Caller=${CURRENT_SERVICE} | Target=${targetService} | ${method.toUpperCase()} ${url} | Status=${status} | Elapsed=${elapsedMs}ms\n`;
|
|
20360
|
+
}
|
|
20361
|
+
async function appendSlowCallLog(targetService, url, method, status, elapsedMs) {
|
|
20362
|
+
if (elapsedMs < THRESHOLD)
|
|
20363
|
+
return; // ما يكتبش غير اللي عدّى الحد
|
|
20364
|
+
try {
|
|
20365
|
+
const file = getLogFile();
|
|
20366
|
+
const dir = path.dirname(file);
|
|
20367
|
+
await ensureLogDir(dir);
|
|
20368
|
+
const line = formatSlowCallLine(targetService, url, method, status, elapsedMs);
|
|
20369
|
+
await promises.appendFile(file, line, { encoding: 'utf8' });
|
|
20370
|
+
}
|
|
20371
|
+
catch (err) {
|
|
20372
|
+
console.error('❌ Failed to write slow call log:', err);
|
|
20373
|
+
}
|
|
20374
|
+
}
|
|
20375
|
+
|
|
20347
20376
|
async function callService(serviceName, options = {}) {
|
|
20348
20377
|
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
|
|
20349
20378
|
const { method = 'GET', path = '/', data, headers, params, } = options;
|
|
20350
20379
|
const start = Date.now();
|
|
20351
20380
|
try {
|
|
20352
|
-
// ...
|
|
20353
20381
|
const instance = await getRandomServiceInstance(serviceName);
|
|
20354
20382
|
const url = `http://${instance.ServiceAddress}:${instance.ServicePort}${path}`;
|
|
20355
20383
|
const response = await axios.request({ url, method, data, headers, params });
|
|
20356
20384
|
const elapsed = Date.now() - start;
|
|
20357
|
-
// سجل
|
|
20385
|
+
// 📌 سجل الكول
|
|
20358
20386
|
await appendCallLog(serviceName, url, method, response.status, elapsed);
|
|
20387
|
+
// 📌 لو بطيء → يتسجل في slow-calls.log
|
|
20388
|
+
await appendSlowCallLog(serviceName, url, method, response.status, elapsed);
|
|
20359
20389
|
return response.data;
|
|
20360
20390
|
}
|
|
20361
20391
|
catch (error) {
|
|
@@ -20364,13 +20394,15 @@ async function callService(serviceName, options = {}) {
|
|
|
20364
20394
|
const url = (_d = (_c = error.config) === null || _c === void 0 ? void 0 : _c.url) !== null && _d !== void 0 ? _d : '';
|
|
20365
20395
|
const methodUsed = (_f = (_e = error.config) === null || _e === void 0 ? void 0 : _e.method) !== null && _f !== void 0 ? _f : method;
|
|
20366
20396
|
const message = (_g = error.message) !== null && _g !== void 0 ? _g : 'Unknown error';
|
|
20367
|
-
// 📌 سجل الفشل
|
|
20397
|
+
// 📌 سجل الفشل
|
|
20368
20398
|
await appendCallLog(serviceName, url, methodUsed, status, elapsed, message);
|
|
20399
|
+
// 📌 لو بطيء → يتسجل برضه في slow-calls.log
|
|
20400
|
+
await appendSlowCallLog(serviceName, url, methodUsed, status, elapsed);
|
|
20369
20401
|
return {
|
|
20370
20402
|
success: false,
|
|
20371
20403
|
message,
|
|
20372
20404
|
status,
|
|
20373
|
-
code: (_k = (_j = (_h = error.response) === null || _h === void 0 ? void 0 : _h.data) === null || _j === void 0 ? void 0 : _j.code) !== null && _k !== void 0 ? _k :
|
|
20405
|
+
code: (_k = (_j = (_h = error.response) === null || _h === void 0 ? void 0 : _h.data) === null || _j === void 0 ? void 0 : _j.code) !== null && _k !== void 0 ? _k : '',
|
|
20374
20406
|
data: (_l = error.response) === null || _l === void 0 ? void 0 : _l.data,
|
|
20375
20407
|
};
|
|
20376
20408
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function appendSlowCallLog(targetService: string, url: string, method: string, status: number, elapsedMs: number): Promise<void>;
|