Skip to content

Commit b2e6c3d

Browse files
author
Antonio Maradiaga
committed
Updated to use cds logging facade
1 parent 6965d47 commit b2e6c3d

File tree

6 files changed

+76
-176
lines changed

6 files changed

+76
-176
lines changed

.sap/code/10-consume-message-from-CAP/server.js

+25-19
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
const cds = require("@sap/cds");
2+
const https = require("https");
3+
const { CloudEvent, HTTP } = require("cloudevents");
24
const Ajv = require("ajv");
35
const addFormats = require("ajv-formats");
46

@@ -14,7 +16,9 @@ var InternalService = null;
1416
function processMessage(message) {
1517
const { messages, qrcodes } = InternalService.entities();
1618

17-
console.log(`Received message: '${message.body}'.`);
19+
const LOG = cds.log("consumer");
20+
21+
LOG.info("Received message:", message.body);
1822

1923
var topic = "";
2024
var validationMessage = "";
@@ -50,7 +54,7 @@ function processMessage(message) {
5054
const isMessageBodyCloudEvent = validate(body);
5155

5256
if (!isMessageBodyCloudEvent) {
53-
console.log(
57+
LOG.error(
5458
"Invalid CloudEvent message:",
5559
ajv.errorsText(validate.errors)
5660
);
@@ -60,18 +64,18 @@ function processMessage(message) {
6064
}
6165
} catch (error) {
6266
if (error instanceof SyntaxError) {
63-
console.log("SyntaxError", error.message);
67+
LOG.error("SyntaxError", error.message);
6468
validationMessage = "Invalid JSON: " + error.message;
6569
} else {
6670
var errorDescription = error.name + ": " + error.message;
67-
console.log(errorDescription);
71+
LOG.error(errorDescription);
6872
validationMessage = errorDescription;
6973
}
7074
}
7175

7276
const isValid = validationMessage == "" ? true : false;
7377

74-
console.log(`Message is valid: ${isValid}. Validation message: ${validationMessage}`);
78+
LOG.info('Message is valid: ', isValid, 'Validation message: ', validationMessage);
7579

7680
/********************************************************
7781
* Store the message in the database
@@ -93,26 +97,26 @@ function processMessage(message) {
9397
INSERT.into(messages)
9498
.entries(entry)
9599
.then((x) => {
96-
console.log(x);
97-
console.log("Message has been inserted into the database");
100+
LOG.info(x);
101+
LOG.info("Message has been inserted into the database", entry.messageId);
98102
});
99103

100104
if (isValid && ceData != null) {
101105
// Calculate qrcode
102106
var ticketId = ceData.ID;
103107

104-
console.log("ticketId: " + ticketId);
108+
LOG.info("Ticket Id: ", ticketId);
105109

106110
var QRCode = require("qrcode");
107111

108112
QRCode.toDataURL(ticketId, function (err, url) {
109-
console.log(url);
113+
LOG.info("QRCode data URL:" , url);
110114

111115
// Print the type of url
112-
console.log(typeof url);
116+
LOG.info(typeof url);
113117

114118
if (err) {
115-
console.log(err);
119+
LOG.error(err);
116120
return;
117121
} else {
118122
var qrcodeEntry = {
@@ -124,20 +128,21 @@ function processMessage(message) {
124128
INSERT.into(qrcodes)
125129
.entries(qrcodeEntry)
126130
.then((x) => {
127-
console.log(x);
128-
console.log("QRCode has been inserted into the database");
131+
LOG.info(x);
132+
LOG.info("QRCode has been inserted into the database");
129133
});
130134
}
131135

132136
// Send the processed message to the topic
133-
// publishMessageToTopic(qrcodeEntry, process.env.SOLACE_REST_PUBLISH_TOPIC);
137+
publishMessageToTopic(qrcodeEntry, process.env.SOLACE_REST_PUBLISH_TOPIC);
134138
});
135139
}
136140
} catch (error) {
137141
var errorDescription = error.name + ": " + error.message;
138-
console.log(errorDescription);
142+
LOG.error(errorDescription);
139143
validationMessage = errorDescription;
140144
}
145+
141146
}
142147

143148
cds.on("served", (services) => {
@@ -151,18 +156,19 @@ cds.on("served", (services) => {
151156
", reason: ",
152157
reason
153158
);
154-
QueueConsumer.exit();
159+
queueConsumer.exit();
155160
});
156161

157162
/********************************************************
158163
* Set up Queue Consumer
159164
********************************************************/
160-
165+
161166
var solaceHostname = `${process.env.SOLACE_AMQP_PROTOCOL}://${process.env.SOLACE_AMQP_USERNAME}:${process.env.SOLACE_AMQP_PASSWORD}@${process.env.SOLACE_AMQP_HOST}:${process.env.SOLACE_AMQP_PORT}`;
162-
167+
163168
var queueConsumer = new QueueConsumer(processMessage)
164169
.host(solaceHostname)
165-
.queue(process.env.SOLACE_AMPQ_QUEUE_NAME);
170+
.queue(process.env.SOLACE_AMPQ_QUEUE_NAME)
171+
.logger(cds.log("AMPQConsumer"));
166172

167173
// the next statement blocks until a message is received
168174
queueConsumer.receive();

.sap/code/10-consume-message-from-CAP/topicPublisher.js

+8-11
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,12 @@ const https = require("https");
22
const { CloudEvent, HTTP } = require("cloudevents");
33

44
function publishMessageToTopic(payload, topic) {
5+
const LOG = cds.log("publisher");
56
const base64Credentials = Buffer.from(
67
`${process.env.SOLACE_REST_USERNAME}:${process.env.SOLACE_REST_PASSWORD}`
78
).toString("base64");
89

9-
console.log(base64Credentials);
10-
console.log(`Sending processed message to topic ${topic}`);
10+
LOG.info('Sending processed message to topic', topic);
1111

1212
/****************************
1313
* Create CloudEvent message and publish to topic
@@ -27,11 +27,8 @@ function publishMessageToTopic(payload, topic) {
2727

2828
const postData = JSON.stringify(JSON.parse(body), null, 2);
2929

30-
console.log("Headers:");
31-
console.log(JSON.stringify(headers, null, 2) + "\n");
32-
33-
console.log("Body:");
34-
console.log(postData + "\n");
30+
LOG.debug("Headers: ", JSON.stringify(headers, null, 2));
31+
LOG.debug("Body: ", postData);
3532

3633
const options = {
3734
hostname: process.env.SOLACE_REST_HOST,
@@ -50,19 +47,19 @@ function publishMessageToTopic(payload, topic) {
5047
});
5148

5249
res.on("end", () => {
53-
console.log(`Submitted processed message to topic ${topic}.`);
54-
console.log(response);
50+
LOG.info('Submitted processed message to topic', topic);
51+
LOG.info(response);
5552
});
5653
});
5754

5855
req.on("error", (error) => {
59-
console.error(error);
56+
LOG.error(error);
6057
});
6158

6259
req.write(postData);
6360
req.end();
6461
} catch (error) {
65-
console.error(error);
62+
LOG.error(error);
6663
}
6764
}
6865

exercises/10-consume-message-from-CAP/README.md

+19-21
Original file line numberDiff line numberDiff line change
@@ -135,10 +135,11 @@ We will start by setting up the connection to the queue and consuming the messag
135135

136136
```javascript
137137
var solaceHostname = `${process.env.SOLACE_AMQP_PROTOCOL}://${process.env.SOLACE_AMQP_USERNAME}:${process.env.SOLACE_AMQP_PASSWORD}@${process.env.SOLACE_AMQP_HOST}:${process.env.SOLACE_AMQP_PORT}`;
138-
138+
139139
var queueConsumer = new QueueConsumer(processMessage)
140140
.host(solaceHostname)
141-
.queue(process.env.SOLACE_AMPQ_QUEUE_NAME);
141+
.queue(process.env.SOLACE_AMPQ_QUEUE_NAME)
142+
.logger(cds.log("AMPQConsumer"));
142143

143144
// the next statement blocks until a message is received
144145
queueConsumer.receive();
@@ -180,7 +181,7 @@ try {
180181
const isMessageBodyCloudEvent = validate(body);
181182

182183
if (!isMessageBodyCloudEvent) {
183-
console.log(
184+
LOG.error(
184185
"Invalid CloudEvent message:",
185186
ajv.errorsText(validate.errors)
186187
);
@@ -190,18 +191,18 @@ try {
190191
}
191192
} catch (error) {
192193
if (error instanceof SyntaxError) {
193-
console.log("SyntaxError", error.message);
194+
LOG.error("SyntaxError", error.message);
194195
validationMessage = "Invalid JSON: " + error.message;
195196
} else {
196197
var errorDescription = error.name + ": " + error.message;
197-
console.log(errorDescription);
198+
LOG.error(errorDescription);
198199
validationMessage = errorDescription;
199200
}
200201
}
201202

202203
const isValid = validationMessage == "" ? true : false;
203204

204-
console.log(`Message is valid: ${isValid}. Validation message: ${validationMessage}`);
205+
LOG.info('Message is valid: ', isValid, 'Validation message: ', validationMessage);
205206
```
206207

207208
The service will process the messages available in the queue and at this stage, it will print out if the message is valid or not and a validation message.
@@ -234,26 +235,26 @@ var entry = {
234235
INSERT.into(messages)
235236
.entries(entry)
236237
.then((x) => {
237-
console.log(x);
238-
console.log("Message has been inserted into the database");
238+
LOG.info(x);
239+
LOG.info("Message has been inserted into the database", entry.messageId);
239240
});
240241

241242
if (isValid && ceData != null) {
242243
// Calculate qrcode
243244
var ticketId = ceData.ID;
244245

245-
console.log("ticketId: " + ticketId);
246+
LOG.info("Ticket Id: ", ticketId);
246247

247248
var QRCode = require("qrcode");
248249

249250
QRCode.toDataURL(ticketId, function (err, url) {
250-
console.log(url);
251+
LOG.info("QRCode data URL:" , url);
251252

252253
// Print the type of url
253-
console.log(typeof url);
254+
LOG.info(typeof url);
254255

255256
if (err) {
256-
console.log(err);
257+
LOG.error(err);
257258
return;
258259
} else {
259260
var qrcodeEntry = {
@@ -265,18 +266,18 @@ var entry = {
265266
INSERT.into(qrcodes)
266267
.entries(qrcodeEntry)
267268
.then((x) => {
268-
console.log(x);
269-
console.log("QRCode has been inserted into the database");
269+
LOG.info(x);
270+
LOG.info("QRCode has been inserted into the database");
270271
});
271272
}
272273

273274
// Send the processed message to the topic
274-
// publishMessageToTopic(qrcodeEntry, process.env.SOLACE_REST_PUBLISH_TOPIC);
275+
publishMessageToTopic(qrcodeEntry, process.env.SOLACE_REST_PUBLISH_TOPIC);
275276
});
276277
}
277278
} catch (error) {
278279
var errorDescription = error.name + ": " + error.message;
279-
console.log(errorDescription);
280+
LOG.error(errorDescription);
280281
validationMessage = errorDescription;
281282
}
282283
```
@@ -311,11 +312,8 @@ const ce = new CloudEvent({
311312

312313
const postData = JSON.stringify(JSON.parse(body), null, 2);
313314

314-
console.log("Headers:");
315-
console.log(JSON.stringify(headers, null, 2) + "\n");
316-
317-
console.log("Body:");
318-
console.log(postData + "\n");
315+
LOG.debug("Headers: ", JSON.stringify(headers, null, 2));
316+
LOG.debug("Body: ", postData);
319317

320318
const options = {
321319
hostname: process.env.SOLACE_REST_HOST,

exercises/10-consume-message-from-CAP/code/edi-codejam-cap-processor/srv/queueConsumer.js

+8-3
Original file line numberDiff line numberDiff line change
@@ -19,13 +19,18 @@ var QueueConsumer = function (processMessage) {
1919
return self;
2020
};
2121

22+
self.logger = function (logger) {
23+
self.LOG = logger;
24+
return self;
25+
};
26+
2227
self.log = function (line) {
2328
var time = new Date().toTimeString().split(' ')[0];
24-
console.log(`[${time}]`, line);
29+
self.LOG.info(`[${time}]`, line);
2530
};
2631

2732
self.error = function (error) {
28-
self.log(`Error: ${JSON.stringify(error)}`);
33+
self.LOG.error(`Error: ${JSON.stringify(error)}`);
2934
process.exit();
3035
};
3136

@@ -38,7 +43,7 @@ var QueueConsumer = function (processMessage) {
3843
self.log('Waiting for messages...');
3944
amqpReceiver.on('message', (message) => {
4045
processMessage(message);
41-
});
46+
});
4247
amqpReceiver.on('errorReceived', (error) => {
4348
self.error(error);
4449
});

0 commit comments

Comments
 (0)