@nsshunt/stsappframework 3.0.17 → 3.0.19

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.
@@ -58,47 +58,72 @@ class IMKafkaManager {
58
58
  console.error(`${_logPrefix}#Terminate: Error: [${error}]`.red);
59
59
  }
60
60
  };
61
+ async #OutputLogsToKafkaTopic(topic, logMessages) {
62
+ if (!this.#topics[topic]) {
63
+ console.log(`Setting up kafka topic: [${topic}] Starting`.yellow);
64
+ this.#topics[topic] = true;
65
+ const result = await this.#km.CreateTopic(topic, 1);
66
+ if (result) {
67
+ console.log(`Setting up kafka topic: [${topic}] Completed`.yellow);
68
+ }
69
+ else {
70
+ console.log(`Setting up kafka topic: [${topic}] Completed - topic already exists`.cyan);
71
+ }
72
+ }
73
+ const messages = [];
74
+ logMessages.forEach((m) => {
75
+ messages.push({ key: topic, value: m });
76
+ });
77
+ // Don't wait for these to return ...
78
+ if (this.#producer) {
79
+ this.#producer.SendMessages(topic, messages);
80
+ }
81
+ }
61
82
  async OutputLogs(instrumentPayload) {
62
83
  try {
63
84
  if (this.#shuttingDown) {
64
85
  return false;
65
86
  }
66
87
  let topic = '';
67
- if (instrumentPayload.context.agentName) {
68
- const { agentName, threadId, asyncRunnerId } = instrumentPayload.context;
69
- if (asyncRunnerId) {
70
- topic = `${agentName}_${threadId}_${asyncRunnerId}`.replace(/@/g, '_');
71
- }
72
- else {
73
- topic = `${agentName}_${threadId}`.replace(/@/g, '_');
74
- }
75
- topic = topic.replace(/\|/g, '_');
76
- }
77
- else {
78
- const { serviceInstanceId, serviceInstanceProcessId } = instrumentPayload.context;
79
- topic = (serviceInstanceId + '_' + serviceInstanceProcessId).replace(/@/g, '_');
80
- }
81
- if (!this.#topics[topic]) {
82
- console.log(`Setting up kafka topic: [${topic}] Starting`.yellow);
83
- this.#topics[topic] = true;
84
- const result = await this.#km.CreateTopic(topic, 1);
85
- if (result) {
86
- console.log(`Setting up kafka topic: [${topic}] Completed`.yellow);
87
- }
88
- else {
89
- console.log(`Setting up kafka topic: [${topic}] Completed - topic already exists`.cyan);
90
- }
91
- }
92
88
  if (instrumentPayload.instruments[stsinstrumentation_1.Gauge.LOGGER]) {
93
89
  const loggerMessages = [...instrumentPayload.instruments[stsinstrumentation_1.Gauge.LOGGER].val];
94
90
  if (loggerMessages.length > 0) {
95
- const messages = [];
96
- loggerMessages.forEach((m) => {
97
- messages.push({ key: topic, value: m });
98
- });
99
- // Don't wait for these to return ...
100
- if (this.#producer) {
101
- this.#producer.SendMessages(topic, messages);
91
+ if (instrumentPayload.context.agentName) {
92
+ // Processing agent payload
93
+ const { agentName, threadId, asyncRunnerId } = instrumentPayload.context;
94
+ topic = '';
95
+ if (agentName && threadId && asyncRunnerId) {
96
+ // Output logs for a specific asyncRunnerId
97
+ topic = `${agentName}_${threadId}_${asyncRunnerId}`.replace(/@/g, '_');
98
+ topic = topic.replace(/\|/g, '_');
99
+ this.#OutputLogsToKafkaTopic(topic, loggerMessages); // no need to await this ...
100
+ }
101
+ if (agentName && threadId) {
102
+ // Output logs for a specific thread (worker) within an agent
103
+ topic = `${agentName}_${threadId}`.replace(/@/g, '_');
104
+ topic = topic.replace(/\|/g, '_');
105
+ this.#OutputLogsToKafkaTopic(topic, loggerMessages); // no need to await this ...
106
+ }
107
+ if (agentName) {
108
+ // Output logs for a specific thread (worker) within an agent
109
+ topic = `${agentName}`.replace(/@/g, '_');
110
+ topic = topic.replace(/\|/g, '_');
111
+ this.#OutputLogsToKafkaTopic(topic, loggerMessages); // no need to await this ...
112
+ }
113
+ }
114
+ else {
115
+ // Processing service payload
116
+ const { serviceInstanceId, serviceInstanceProcessId, pid, ppid } = instrumentPayload.context;
117
+ if (serviceInstanceId && serviceInstanceProcessId && pid && ppid) {
118
+ // Output to the specific thread within an instance
119
+ topic = (serviceInstanceId + '_' + serviceInstanceProcessId).replace(/@/g, '_');
120
+ this.#OutputLogsToKafkaTopic(topic, loggerMessages); // no need to await this ...
121
+ if (pid === ppid) {
122
+ // Output only to the main thread on the service, i.e. this is for O/A service logging
123
+ topic = serviceInstanceId.replace(/@/g, '_');
124
+ this.#OutputLogsToKafkaTopic(topic, loggerMessages); // no need to await this ...
125
+ }
126
+ }
102
127
  }
103
128
  }
104
129
  }
@@ -1 +1 @@
1
- {"version":3,"file":"IMKafkaManager.js","sourceRoot":"","sources":["../../src/kafka/IMKafkaManager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"IMKafkaManager.js","sourceRoot":"","sources":["../../src/kafka/IMKafkaManager.ts"],"names":[],"mappings":";;;AAEA,oEAAmD;AAEnD,iDAAkE;AAKlE,kDAA6C;AAC7C,MAAM,QAAQ,GAAG,IAAA,oBAAQ,GAAE,CAAA;AAE3B,MAAM,UAAU,GAAG,iBAAiB,CAAA;AAEpC,uDAAuD;AACvD,MAAa,cAAc;IACvB,aAAa,GAAY,KAAK,CAAC;IAC/B,SAAS,GAAyB,IAAI,CAAC;IAEvC,GAAG,CAAe;IAClB,OAAO,GAAe,EAAG,CAAA;IAEzB;QAEI,iBAAiB;QAEjB,MAAM,GAAG,GAAwB;YAC7B,QAAQ,EAAE,QAAQ,CAAC,cAAc;YACjC,OAAO,EAAE,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC;YAC1C,SAAS,EAAE,QAAQ,CAAC,gBAAgB;YACpC,YAAY,EAAE,QAAQ,CAAC,mBAAmB;YAC1C,iBAAiB,EAAE,QAAQ,CAAC,wBAAwB;YACpD,QAAQ,EAAE,QAAQ,CAAC,eAAe;YAClC,MAAM,EAAE,QAAQ,CAAC,aAAa;YAC9B,cAAc,EAAE,QAAQ,CAAC,qBAAqB;SACjD,CAAA;QACD,IAAI,QAAQ,CAAC,aAAa,EAAE;YACxB,GAAG,CAAC,GAAG,GAAG;gBACN,kBAAkB,EAAE,QAAQ,CAAC,4BAA4B;gBACzD,MAAM,EAAE,QAAQ,CAAC,gBAAgB;gBACjC,YAAY,EAAE,QAAQ,CAAC,kBAAkB;gBACzC,OAAO,EAAE,QAAQ,CAAC,iBAAiB;aACtC,CAAA;SACJ;QAED,IAAI,CAAC,GAAG,GAAG,IAAI,2BAAY,CAAC,GAAG,CAAC,CAAC;IACrC,CAAC;IAED,IAAI,EAAE;QACF,OAAO,IAAI,CAAC,GAAG,CAAC;IACpB,CAAC;IAED,KAAK,GAAG,KAAK,IAAmB,EAAE;QAC9B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,cAAc,EAAE,CAAC;QAC3C,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAA;IAClC,CAAC,CAAA;IAED,SAAS,GAAG,KAAK,IAAmB,EAAE;QAClC,IAAI;YACA,IAAI,IAAI,CAAC,aAAa,EAAE;gBACpB,OAAO,CAAC,GAAG,CAAC,+DAA+D,CAAC,MAAM,CAAC,CAAC;aACvF;iBAAM;gBACH,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;gBAC1B,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC;gBACzC,IAAI,IAAI,CAAC,SAAS,EAAE;oBAChB,MAAM,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC;iBACrC;aACJ;SACJ;QAAC,OAAO,KAAK,EAAE;YACZ,OAAO,CAAC,KAAK,CAAC,GAAG,UAAU,uBAAuB,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC;SACnE;IACL,CAAC,CAAA;IAED,KAAK,CAAC,uBAAuB,CAAC,KAAa,EAAE,WAAqB;QAC9D,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YACtB,OAAO,CAAC,GAAG,CAAC,4BAA4B,KAAK,YAAY,CAAC,MAAM,CAAC,CAAC;YAClE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;YAC3B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YACpD,IAAI,MAAM,EAAE;gBACR,OAAO,CAAC,GAAG,CAAC,4BAA4B,KAAK,aAAa,CAAC,MAAM,CAAC,CAAC;aACtE;iBAAM;gBACH,OAAO,CAAC,GAAG,CAAC,4BAA4B,KAAK,oCAAoC,CAAC,IAAI,CAAC,CAAC;aAC3F;SACJ;QAED,MAAM,QAAQ,GAAiB,EAAG,CAAC;QACnC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;YACtB,QAAQ,CAAC,IAAI,CAAC,EAAC,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,EAAC,CAAC,CAAA;QACzC,CAAC,CAAC,CAAC;QAEH,qCAAqC;QACrC,IAAI,IAAI,CAAC,SAAS,EAAE;YAChB,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,KAAK,EAAE,QAAe,CAAC,CAAC;SACvD;IACL,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,iBAAoC;QACjD,IAAI;YACA,IAAI,IAAI,CAAC,aAAa,EAAE;gBACpB,OAAO,KAAK,CAAC;aAChB;YAED,IAAI,KAAK,GAAW,EAAE,CAAC;YACvB,IAAI,iBAAiB,CAAC,WAAW,CAAC,0BAAK,CAAC,MAAM,CAAC,EAAE;gBAC7C,MAAM,cAAc,GAAG,CAAE,GAAG,iBAAiB,CAAC,WAAW,CAAC,0BAAK,CAAC,MAAM,CAAC,CAAC,GAAe,CAAE,CAAC;gBAC1F,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE;oBAC3B,IAAI,iBAAiB,CAAC,OAAO,CAAC,SAAS,EAAE;wBACrC,2BAA2B;wBAC3B,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,aAAa,EAAE,GAAG,iBAAiB,CAAC,OAAO,CAAC;wBAEzE,KAAK,GAAG,EAAE,CAAC;wBACX,IAAI,SAAS,IAAI,QAAQ,IAAI,aAAa,EAAE;4BACxC,2CAA2C;4BAC3C,KAAK,GAAG,GAAG,SAAS,IAAI,QAAQ,IAAI,aAAa,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;4BACvE,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;4BAClC,IAAI,CAAC,uBAAuB,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC,CAAC,4BAA4B;yBACpF;wBACD,IAAI,SAAS,IAAI,QAAQ,EAAE;4BACvB,6DAA6D;4BAC7D,KAAK,GAAG,GAAG,SAAS,IAAI,QAAQ,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;4BACtD,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;4BAClC,IAAI,CAAC,uBAAuB,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC,CAAC,4BAA4B;yBACpF;wBACD,IAAI,SAAS,EAAE;4BACX,6DAA6D;4BAC7D,KAAK,GAAG,GAAG,SAAS,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;4BAC1C,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;4BAClC,IAAI,CAAC,uBAAuB,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC,CAAC,4BAA4B;yBACpF;qBACJ;yBAAM;wBACH,6BAA6B;wBAC7B,MAAM,EAAE,iBAAiB,EAAE,wBAAwB,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,iBAAiB,CAAC,OAAO,CAAC;wBAC7F,IAAI,iBAAiB,IAAI,wBAAwB,IAAI,GAAG,IAAI,IAAI,EAAE;4BAC9D,mDAAmD;4BACnD,KAAK,GAAG,CAAC,iBAAiB,GAAG,GAAG,GAAG,wBAAwB,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;4BAChF,IAAI,CAAC,uBAAuB,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC,CAAC,4BAA4B;4BAEjF,IAAI,GAAG,KAAK,IAAI,EAAE;gCACd,sFAAsF;gCACtF,KAAK,GAAG,iBAAiB,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;gCAC7C,IAAI,CAAC,uBAAuB,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC,CAAC,4BAA4B;6BACpF;yBACJ;qBACJ;iBACJ;aACJ;YACD,OAAO,IAAI,CAAC;SACf;QAAC,OAAO,KAAU,EAAE;YACjB,OAAO,CAAC,KAAK,CAAC,GAAG,UAAU,oDAAoD,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC;YAC7F,OAAO,KAAK,CAAC;SAChB;IACL,CAAC;CACJ;AAzID,wCAyIC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nsshunt/stsappframework",
3
- "version": "3.0.17",
3
+ "version": "3.0.19",
4
4
  "description": "",
5
5
  "main": "dist/index.js",
6
6
  "types": "./types/index.d.ts",
@@ -71,6 +71,29 @@ export class IMKafkaManager {
71
71
  }
72
72
  }
73
73
 
74
+ async #OutputLogsToKafkaTopic(topic: string, logMessages: string[]) {
75
+ if (!this.#topics[topic]) {
76
+ console.log(`Setting up kafka topic: [${topic}] Starting`.yellow);
77
+ this.#topics[topic] = true;
78
+ const result = await this.#km.CreateTopic(topic, 1);
79
+ if (result) {
80
+ console.log(`Setting up kafka topic: [${topic}] Completed`.yellow);
81
+ } else {
82
+ console.log(`Setting up kafka topic: [${topic}] Completed - topic already exists`.cyan);
83
+ }
84
+ }
85
+
86
+ const messages: JSONObject[] = [ ];
87
+ logMessages.forEach((m) => {
88
+ messages.push({key: topic, value: m})
89
+ });
90
+
91
+ // Don't wait for these to return ...
92
+ if (this.#producer) {
93
+ this.#producer.SendMessages(topic, messages as any);
94
+ }
95
+ }
96
+
74
97
  async OutputLogs(instrumentPayload: InstrumentPayload): Promise<boolean> {
75
98
  try {
76
99
  if (this.#shuttingDown) {
@@ -78,44 +101,46 @@ export class IMKafkaManager {
78
101
  }
79
102
 
80
103
  let topic: string = '';
81
-
82
- if (instrumentPayload.context.agentName) {
83
- const { agentName, threadId, asyncRunnerId } = instrumentPayload.context;
84
-
85
- if (asyncRunnerId) {
86
- topic = `${agentName}_${threadId}_${asyncRunnerId}`.replace(/@/g, '_');
87
- } else {
88
- topic = `${agentName}_${threadId}`.replace(/@/g, '_');
89
- }
90
- topic = topic.replace(/\|/g, '_')
91
- } else {
92
- const { serviceInstanceId, serviceInstanceProcessId } = instrumentPayload.context;
93
- topic = (serviceInstanceId + '_' + serviceInstanceProcessId).replace(/@/g, '_');
94
- }
95
-
96
- if (!this.#topics[topic]) {
97
- console.log(`Setting up kafka topic: [${topic}] Starting`.yellow);
98
- this.#topics[topic] = true;
99
- const result = await this.#km.CreateTopic(topic, 1);
100
- if (result) {
101
- console.log(`Setting up kafka topic: [${topic}] Completed`.yellow);
102
- } else {
103
- console.log(`Setting up kafka topic: [${topic}] Completed - topic already exists`.cyan);
104
- }
105
- }
106
-
107
104
  if (instrumentPayload.instruments[Gauge.LOGGER]) {
108
- const loggerMessages = [ ...instrumentPayload.instruments[Gauge.LOGGER].val as string[] ]
105
+ const loggerMessages = [ ...instrumentPayload.instruments[Gauge.LOGGER].val as string[] ];
109
106
  if (loggerMessages.length > 0) {
110
-
111
- const messages: JSONObject[] = [ ];
112
- loggerMessages.forEach((m) => {
113
- messages.push({key: topic, value: m})
114
- });
115
-
116
- // Don't wait for these to return ...
117
- if (this.#producer) {
118
- this.#producer.SendMessages(topic, messages as any);
107
+ if (instrumentPayload.context.agentName) {
108
+ // Processing agent payload
109
+ const { agentName, threadId, asyncRunnerId } = instrumentPayload.context;
110
+
111
+ topic = '';
112
+ if (agentName && threadId && asyncRunnerId) {
113
+ // Output logs for a specific asyncRunnerId
114
+ topic = `${agentName}_${threadId}_${asyncRunnerId}`.replace(/@/g, '_');
115
+ topic = topic.replace(/\|/g, '_');
116
+ this.#OutputLogsToKafkaTopic(topic, loggerMessages); // no need to await this ...
117
+ }
118
+ if (agentName && threadId) {
119
+ // Output logs for a specific thread (worker) within an agent
120
+ topic = `${agentName}_${threadId}`.replace(/@/g, '_');
121
+ topic = topic.replace(/\|/g, '_');
122
+ this.#OutputLogsToKafkaTopic(topic, loggerMessages); // no need to await this ...
123
+ }
124
+ if (agentName) {
125
+ // Output logs for a specific thread (worker) within an agent
126
+ topic = `${agentName}`.replace(/@/g, '_');
127
+ topic = topic.replace(/\|/g, '_');
128
+ this.#OutputLogsToKafkaTopic(topic, loggerMessages); // no need to await this ...
129
+ }
130
+ } else {
131
+ // Processing service payload
132
+ const { serviceInstanceId, serviceInstanceProcessId, pid, ppid } = instrumentPayload.context;
133
+ if (serviceInstanceId && serviceInstanceProcessId && pid && ppid) {
134
+ // Output to the specific thread within an instance
135
+ topic = (serviceInstanceId + '_' + serviceInstanceProcessId).replace(/@/g, '_');
136
+ this.#OutputLogsToKafkaTopic(topic, loggerMessages); // no need to await this ...
137
+
138
+ if (pid === ppid) {
139
+ // Output only to the main thread on the service, i.e. this is for O/A service logging
140
+ topic = serviceInstanceId.replace(/@/g, '_');
141
+ this.#OutputLogsToKafkaTopic(topic, loggerMessages); // no need to await this ...
142
+ }
143
+ }
119
144
  }
120
145
  }
121
146
  }
@@ -1 +1 @@
1
- {"version":3,"file":"IMKafkaManager.d.ts","sourceRoot":"","sources":["../../src/kafka/IMKafkaManager.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AAGpD,OAAO,EAAE,YAAY,EAAuB,MAAM,gBAAgB,CAAA;AAWlE,qBAAa,cAAc;;;IAiCvB,IAAI,EAAE,IAAI,YAAY,CAErB;IAED,KAAK,QAAa,QAAQ,IAAI,CAAC,CAG9B;IAED,SAAS,QAAa,QAAQ,IAAI,CAAC,CAclC;IAEK,UAAU,CAAC,iBAAiB,EAAE,iBAAiB,GAAG,OAAO,CAAC,OAAO,CAAC;CAsD3E"}
1
+ {"version":3,"file":"IMKafkaManager.d.ts","sourceRoot":"","sources":["../../src/kafka/IMKafkaManager.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AAGpD,OAAO,EAAE,YAAY,EAAuB,MAAM,gBAAgB,CAAA;AAWlE,qBAAa,cAAc;;;IAiCvB,IAAI,EAAE,IAAI,YAAY,CAErB;IAED,KAAK,QAAa,QAAQ,IAAI,CAAC,CAG9B;IAED,SAAS,QAAa,QAAQ,IAAI,CAAC,CAclC;IAyBK,UAAU,CAAC,iBAAiB,EAAE,iBAAiB,GAAG,OAAO,CAAC,OAAO,CAAC;CAwD3E"}