mqtt-devices-parser 1.0.31 → 1.0.33

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.
@@ -1,3 +1,4 @@
1
+ const logger = require('../logger').child({ label: 'Kafka' });
1
2
  const { Kafka, logLevel } = require('kafkajs');
2
3
  const fs = require('fs');
3
4
 
@@ -12,11 +13,11 @@ var self = module.exports = {
12
13
  return new Promise(async (resolve, reject) => {
13
14
  try {
14
15
  if (!config.kafka.enabled) {
15
- console.log("[Kafka] consumer is disabled");
16
+ logger.info("consumer is disabled");
16
17
  return resolve();
17
18
  }
18
19
 
19
- console.log("[Kafka] Initializing consumer...");
20
+ logger.info("Initializing consumer...");
20
21
 
21
22
  // Generate a random 6-digit number
22
23
  const randomNumber = Math.floor(100000 + Math.random() * 900000);
@@ -31,7 +32,7 @@ var self = module.exports = {
31
32
  };
32
33
 
33
34
  if(config.kafka.ssl.enabled === true){
34
- console.log("[Kafka] Try to establish SSL connection..");
35
+ logger.info("Try to establish SSL connection..");
35
36
  if(config.kafka.ssl.rejectUnauthorized){
36
37
  // check certificate. Most secure
37
38
  kafkaConfig.ssl = {
@@ -48,7 +49,7 @@ var self = module.exports = {
48
49
 
49
50
  // Add SASL authentication if credentials provided
50
51
  if (config.kafka.sasl.username && config.kafka.sasl.password) {
51
- console.log("[Kafka] SASL: username and password are defined");
52
+ logger.info("SASL: username and password are defined");
52
53
  kafkaConfig.sasl = {
53
54
  mechanism: config.kafka.sasl.mechanism,
54
55
  username: config.kafka.sasl.username,
@@ -86,7 +87,7 @@ var self = module.exports = {
86
87
  const topics = projects.map(project => project.toString());
87
88
 
88
89
  if (topics.length === 0) {
89
- console.log("[Kafka] No topics to subscribe to");
90
+ logger.info("No topics to subscribe to");
90
91
  return resolve();
91
92
  }
92
93
 
@@ -95,11 +96,11 @@ var self = module.exports = {
95
96
  fromBeginning: false
96
97
  });
97
98
 
98
- console.log(`[Kafka] consumer subscribed to topics: ${topics.join(', ')}`);
99
+ logger.info(`consumer subscribed to topics: ${topics.join(', ')}`);
99
100
 
100
101
  return resolve();
101
102
  } catch (error) {
102
- console.error("[Kafka] Failed to initialize consumer:", error);
103
+ logger.error("Failed to initialize consumer:", error);
103
104
  return reject(error);
104
105
  }
105
106
  });
@@ -111,13 +112,13 @@ var self = module.exports = {
111
112
  }
112
113
 
113
114
  try {
114
- console.log("[Kafka] Starting consumer...");
115
+ logger.info("Starting consumer...");
115
116
  running = true;
116
117
 
117
118
  await consumer.run({
118
119
  eachMessage: async ({ topic, partition, message }) => {
119
120
 
120
- console.log(`[KAFKA] rx: ${message.key.toString()}`);
121
+ logger.debug(`rx: ${message.key.toString()}`);
121
122
 
122
123
  try {
123
124
  let payload = message.value ? message.value.toString() : '';
@@ -140,17 +141,17 @@ var self = module.exports = {
140
141
 
141
142
  try{
142
143
  payload = JSON.parse(payload);
143
- //console.log(`[KAFKA] payload: ${payload.mqtt.payload}`);
144
+ logger.trace(`payload: ${payload.mqtt.payload}`);
144
145
  }catch(error){
145
- console.log(`[KAFKA] error: ${payload}`);
146
- console.log(error)
146
+ logger.info(`error: ${payload}`);
147
+ logger.info(error)
147
148
  }
148
149
 
149
150
  // Call the device parser with formatted topic
150
151
  await $.device.parseMessage(payload.client.id, formattedTopic, JSON.stringify(payload.mqtt.payload), payload.mqtt.retain);
151
152
 
152
153
  } catch (error) {
153
- console.error('[Kafka] Error processing message:', {
154
+ logger.error('Error processing message:', {
154
155
  topic: topic.toString(),
155
156
  partition,
156
157
  offset: message.offset ? message.offset.toString() : 'unknown',
@@ -160,9 +161,9 @@ var self = module.exports = {
160
161
  },
161
162
  });
162
163
 
163
- console.log("[Kafka] consumer started successfully");
164
+ logger.info("consumer started successfully");
164
165
  } catch (error) {
165
- console.error("[KAFKA] Failed to start consumer:", error);
166
+ logger.error("Failed to start consumer:", error);
166
167
  running = false;
167
168
  throw error;
168
169
  }
@@ -174,13 +175,13 @@ var self = module.exports = {
174
175
  }
175
176
 
176
177
  try {
177
- console.log("[KAFKA] Stopping consumer...");
178
+ logger.info("Stopping consumer...");
178
179
  running = false;
179
180
  await consumer.stop();
180
181
  await consumer.disconnect();
181
- console.log("[KAFKA] consumer stopped successfully");
182
+ logger.info("consumer stopped successfully");
182
183
  } catch (error) {
183
- console.error("[KAFKA] Error stopping consumer:", error);
184
+ logger.error("Error stopping consumer:", error);
184
185
  }
185
186
  },
186
187
 
@@ -192,7 +193,7 @@ var self = module.exports = {
192
193
  // Graceful shutdown handling
193
194
  process.on('SIGINT', async () => {
194
195
  if (running) {
195
- console.log('Received SIGINT, gracefully shutting down Kafka consumer...');
196
+ logger.info('Received SIGINT, gracefully shutting down Kafka consumer...');
196
197
  await self.stop();
197
198
  }
198
199
  process.exit(0);
@@ -200,7 +201,7 @@ process.on('SIGINT', async () => {
200
201
 
201
202
  process.on('SIGTERM', async () => {
202
203
  if (running) {
203
- console.log('Received SIGTERM, gracefully shutting down Kafka consumer...');
204
+ logger.info('Received SIGTERM, gracefully shutting down Kafka consumer...');
204
205
  await self.stop();
205
206
  }
206
207
  process.exit(0);
package/src/logger.js ADDED
@@ -0,0 +1,20 @@
1
+ const pino = require('pino');
2
+ $ = {};
3
+ $.config = require('../config');
4
+
5
+ const logger = pino({
6
+ level: $.config.log.level,
7
+ timestamp: false,
8
+
9
+ base: {
10
+ pid: process.pid
11
+ },
12
+
13
+ formatters: {
14
+ level(label) {
15
+ return { level: label };
16
+ }
17
+ }
18
+ });
19
+
20
+ module.exports = logger;
@@ -0,0 +1,12 @@
1
+ const logger = require('./logger');
2
+
3
+ describe('logger', () => {
4
+ it('supports labeled device loggers', () => {
5
+ const deviceLogger = logger.child({ label: 'Device', deviceId: 'uid:123' });
6
+
7
+ expect(deviceLogger.bindings()).toEqual({
8
+ label: 'Device',
9
+ deviceId: 'uid:123'
10
+ });
11
+ });
12
+ });