Skip to content

Commit

Permalink
feat(mojaloop/#3750): add log level enabled checking (#468)
Browse files Browse the repository at this point in the history
* feat(mojaloop/#3750): add log level enabled checking

* deps

* bump

* fix
  • Loading branch information
kleyow authored Feb 21, 2024
1 parent 2e49491 commit 345d9fc
Show file tree
Hide file tree
Showing 41 changed files with 492 additions and 458 deletions.
4 changes: 2 additions & 2 deletions modules/api-svc/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -70,11 +70,11 @@
"@mojaloop/central-services-shared": "18.2.0",
"@mojaloop/event-sdk": "^14.0.0",
"@mojaloop/sdk-scheme-adapter-private-shared-lib": "workspace:^",
"@mojaloop/sdk-standard-components": "v17.3.0",
"@mojaloop/sdk-standard-components": "v17.4.0",
"ajv": "8.12.0",
"axios": "^1.6.7",
"co-body": "^6.1.0",
"dotenv": "^16.4.4",
"dotenv": "^16.4.5",
"env-var": "^7.4.1",
"express": "^4.18.2",
"fast-json-patch": "^3.1.1",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,6 @@ module.exports.handleSDKOutboundBulkAcceptPartyInfoRequestedDmEvt = async (
currentState: BulkTransactionState.WAITING_FOR_PARTY_ACCEPTANCE,
});
} catch (err) {
logger.push({ err }).error('Error in handleSDKOutboundBulkAcceptPartyInfoRequested');
logger.isErrorEnabled() && logger.push({ err }).error('Error in handleSDKOutboundBulkAcceptPartyInfoRequested');
}
};
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,6 @@ module.exports.handleSDKOutboundBulkAcceptQuoteRequestedDmEvt = async (
currentState: BulkTransactionState.WAITING_FOR_QUOTE_ACCEPTANCE,
});
} catch (err) {
logger.push({ err }).error('Error in handleSDKOutboundBulkAcceptQuoteRequested');
logger.isErrorEnabled() && logger.push({ err }).error('Error in handleSDKOutboundBulkAcceptQuoteRequested');
}
};
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,6 @@ module.exports.handleSDKOutboundBulkResponsePreparedDmEvt = async (
});
await options.producer.sendDomainEvent(sdkOutboundBulkResponseSentDmEvt);
} catch (err) {
logger.push({ err }).error('Error in handleSDKOutboundBulkResponsePreparedDmEvt');
logger.isErrorEnabled() && logger.push({ err }).error('Error in handleSDKOutboundBulkResponsePreparedDmEvt');
}
};
12 changes: 6 additions & 6 deletions modules/api-svc/src/BackendEventHandler/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -58,13 +58,13 @@ class BackendEventHandler {

async start() {
const config = this._conf;
this._logger.info('start');
this._logger.isInfoEnabled() && this._logger.info('start');

this._consumer = new KafkaDomainEventConsumer(this._messageHandler.bind(this), config.backendEventHandler.domainEventConsumer, this._loggerFromLoggingBC);
this._logger.info(`Created Message Consumer of type ${this._consumer.constructor.name}`);
this._logger.isInfoEnabled() && this._logger.info(`Created Message Consumer of type ${this._consumer.constructor.name}`);

this._producer = new KafkaDomainEventProducer(config.backendEventHandler.domainEventProducer, this._loggerFromLoggingBC);
this._logger.info(`Created Message Producer of type ${this._producer.constructor.name}`);
this._logger.isInfoEnabled() && this._logger.info(`Created Message Producer of type ${this._producer.constructor.name}`);
await this._producer.init();

// Create options for handlers
Expand All @@ -79,7 +79,7 @@ class BackendEventHandler {
}

async stop() {
this._logger.info('stop');
this._logger.isInfoEnabled() && this._logger.info('stop');
await Promise.all([
this._consumer?.destroy(),
this._producer?.destroy(),
Expand All @@ -88,7 +88,7 @@ class BackendEventHandler {
}

async _messageHandler(message) {
this._logger.info(`Got domain event message: ${message.getName()}`);
this._logger.isInfoEnabled() && this._logger.info(`Got domain event message: ${message.getName()}`);
// TODO: Handle errors validation here
switch (message.getName()) {
case SDKOutboundBulkAcceptPartyInfoRequestedDmEvt.name: {
Expand All @@ -104,7 +104,7 @@ class BackendEventHandler {
break;
}
default: {
this._logger.debug(`${message?.getName()}:${message?.getKey()} - Skipping unknown domain event`);
this._logger.isDebugEnabled() && this._logger.debug(`${message?.getName()}:${message?.getKey()} - Skipping unknown domain event`);
return;
}
}
Expand Down
14 changes: 7 additions & 7 deletions modules/api-svc/src/ControlAgent/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -144,22 +144,22 @@ class Client extends ws {

async send(msg) {
const data = typeof msg === 'string' ? msg : serialise(msg);
this._logger.push({ data }).debug('Sending message');
this._logger.isDebugEnabled() && this._logger.push({ data }).debug('Sending message');
return new Promise((resolve) => super.send.call(this, data, resolve));
}

// Receive a single message
async receive() {
return new Promise((resolve) => this.once('message', (data) => {
const msg = deserialise(data);
this._logger.push({ msg }).debug('Received');
this._logger.isDebugEnabled() && this._logger.push({ msg }).debug('Received');
resolve(msg);
}));
}

// Close connection
async stop() {
this._logger.info('Control client shutting down...');
this._logger.isInfoEnabled() && this._logger.info('Control client shutting down...');
this.close();
}

Expand All @@ -171,24 +171,24 @@ class Client extends ws {
try {
msg = deserialise(data);
} catch (err) {
this._logger.push({ data }).console.error();('Couldn\'t parse received message');
this._logger.isErrorEnabled() && this._logger.push({ data }).console.error();('Couldn\'t parse received message');
this.send(build.ERROR.NOTIFY.JSON_PARSE_ERROR());
}
this._logger.push({ msg }).debug('Handling received message');
this._logger.isDebugEnabled() && this._logger.push({ msg }).debug('Handling received message');
switch (msg.msg) {
case MESSAGE.CONFIGURATION:
switch (msg.verb) {
case VERB.NOTIFY: {
const dup = JSON.parse(JSON.stringify(this._appConfig)); // fast-json-patch explicitly mutates
_.merge(dup, msg.data);
this._logger.push({ oldConf: this._appConfig, newConf: dup }).debug('Emitting new configuration');
this._logger.isDebugEnabled() && this._logger.push({ oldConf: this._appConfig, newConf: dup }).debug('Emitting new configuration');
this.emit(EVENT.RECONFIGURE, dup);
break;
}
case VERB.PATCH: {
const dup = JSON.parse(JSON.stringify(this._appConfig)); // fast-json-patch explicitly mutates
jsonPatch.applyPatch(dup, msg.data);
this._logger.push({ oldConf: this._appConfig, newConf: dup }).debug('Emitting new configuration');
this._logger.isDebugEnabled() && this._logger.push({ oldConf: this._appConfig, newConf: dup }).debug('Emitting new configuration');
this.emit(EVENT.RECONFIGURE, dup);
break;
}
Expand Down
24 changes: 12 additions & 12 deletions modules/api-svc/src/ControlServer/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -150,15 +150,15 @@ class Client extends ws {

async send(msg) {
const data = typeof msg === 'string' ? msg : serialise(msg);
this._logger.push({ data }).debug('Sending message');
this._logger.isDebugEnabled() && this._logger.push({ data }).debug('Sending message');
return new Promise((resolve) => super.send.call(this, data, resolve));
}

// Receive a single message
async receive() {
return new Promise((resolve) => this.once('message', (data) => {
const msg = deserialise(data);
this._logger.push({ msg }).debug('Received');
this._logger.isDebugEnabled() && this._logger.push({ msg }).debug('Received');
resolve(msg);
}));
}
Expand Down Expand Up @@ -186,7 +186,7 @@ class Server extends ws.Server {
this._clientData = new Map();

this.on('error', err => {
this._logger.push({ err })
this._logger.isErrorEnabled() && this._logger.push({ err })
.error('Unhandled websocket error occurred. Shutting down.');
process.exit(1);
});
Expand All @@ -197,18 +197,18 @@ class Server extends ws.Server {
ip: getWsIp(req),
remoteAddress: req.socket.remoteAddress,
});
logger.info('Websocket connection received');
logger.isInfoEnabled() && logger.info('Websocket connection received');
this._clientData.set(socket, { ip: req.connection.remoteAddress, logger });

socket.on('close', (code, reason) => {
logger.push({ code, reason }).info('Websocket connection closed');
logger.isInfoEnabled() && logger.push({ code, reason }).info('Websocket connection closed');
this._clientData.delete(socket);
});

socket.on('message', this._handle(socket, logger));
});

this._logger.push(this.address()).info('running on');
this._logger.isInfoEnabled() && this._logger.push(this.address()).info('running on');
}

// Close the server then wait for all the client sockets to close
Expand All @@ -218,14 +218,14 @@ class Server extends ws.Server {
client.terminate();
}
await closing;
this._logger.info('Control server shutdown complete');
this._logger.isInfoEnabled() && this._logger.info('Control server shutdown complete');
}


async notifyClientsOfCurrentConfig() {
const updateConfMsg = build.CONFIGURATION.NOTIFY(this._appConfig);
const logError = (socket, message) => (err) =>
this._logger
this._logger.isErrorEnabled() && this._logger
.push({ message, ip: this._clientData.get(socket).ip, err })
.error('Error sending reconfigure notification to client');
const sendToAllClients = (msg) => Promise.all(
Expand All @@ -244,10 +244,10 @@ class Server extends ws.Server {
try {
msg = deserialise(data);
} catch (err) {
logger.push({ data }).error('Couldn\'t parse received message');
logger.isErrorEnabled() && logger.push({ data }).error('Couldn\'t parse received message');
client.send(build.ERROR.NOTIFY.JSON_PARSE_ERROR());
}
logger.push({ msg }).debug('Handling received message');
logger.isDebugEnabled() && logger.push({ msg }).debug('Handling received message');
switch (msg.msg) {
case MESSAGE.CONFIGURATION:
switch (msg.verb) {
Expand All @@ -257,7 +257,7 @@ class Server extends ws.Server {
case VERB.NOTIFY: {
const dup = structuredClone(this._appConfig); // fast-json-patch explicitly mutates
_.merge(dup, msg.data);
this._logger.push({ oldConf: this._appConfig, newConf: dup }).debug('Emitting new configuration');
this._logger.isDebugEnabled() && this._logger.push({ oldConf: this._appConfig, newConf: dup }).debug('Emitting new configuration');
this.emit(EVENT.RECONFIGURE, dup);
break;
}
Expand All @@ -266,7 +266,7 @@ class Server extends ws.Server {
// client library?
const dup = structuredClone(this._appConfig); // fast-json-patch explicitly mutates
jsonPatch.applyPatch(dup, msg.data);
logger.push({ oldConf: this._appConfig, newConf: dup }).debug('Emitting new configuration');
logger.isDebugEnabled() && logger.push({ oldConf: this._appConfig, newConf: dup }).debug('Emitting new configuration');
this.emit(EVENT.RECONFIGURE, dup);
break;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ module.exports.handleBulkQuotesRequestedDmEvt = async (
await options.producer.sendDomainEvent(bulkQuotesCallbackReceivedDmEvt);
}
catch (err) {
logger.push({ err }).error('Error in handleBulkQuotesRequestedDmEvt');
logger.isErrorEnabled() && logger.push({ err }).error('Error in handleBulkQuotesRequestedDmEvt');
const bulkQuotesCallbackReceivedDmEvt = new BulkQuotesCallbackReceivedDmEvt({
bulkId: event.getKey(),
content: {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ module.exports.handleBulkTransfersRequestedDmEvt = async (

await options.producer.sendDomainEvent(bulkTransfersCallbackReceivedDmEvt);
} catch (err) {
logger.push({ err }).error('Error in handleBulkTransfersRequestedDmEvt');
logger.isErrorEnabled() && logger.push({ err }).error('Error in handleBulkTransfersRequestedDmEvt');
const bulkTransfersCallbackReceivedDmEvt = new BulkTransfersCallbackReceivedDmEvt({
bulkId: event.getKey(),
content: {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ module.exports.handlePartyInfoRequestedDmEvt = async (
});
await options.producer.sendDomainEvent(partyInfoCallbackReceivedDmEvt);
} catch (err) {
logger.push({ err }).error('Error in handlePartyInfoRequestedDmEvt');
logger.isErrorEnabled() && logger.push({ err }).error('Error in handlePartyInfoRequestedDmEvt');
const { code, message } = Errors.MojaloopApiErrorCodes.SERVER_TIMED_OUT;
const partyInfoCallbackReceivedDmEvt = new PartyInfoCallbackReceivedDmEvt({
bulkId: event.getKey(),
Expand Down
12 changes: 6 additions & 6 deletions modules/api-svc/src/FSPIOPEventHandler/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -52,13 +52,13 @@ class FSPIOPEventHandler {

async start() {
const config = this._conf;
this._logger.info('start');
this._logger.isInfoEnabled() && this._logger.info('start');

this._consumer = new KafkaDomainEventConsumer(this._messageHandler.bind(this), config.fspiopEventHandler.domainEventConsumer, this._loggerFromLoggingBC);
this._logger.info(`Created Message Consumer of type ${this._consumer.constructor.name}`);
this._logger.isInfoEnabled() && this._logger.info(`Created Message Consumer of type ${this._consumer.constructor.name}`);

this._producer = new KafkaDomainEventProducer(config.fspiopEventHandler.domainEventProducer, this._loggerFromLoggingBC);
this._logger.info(`Created Message Producer of type ${this._producer.constructor.name}`);
this._logger.isInfoEnabled() && this._logger.info(`Created Message Producer of type ${this._producer.constructor.name}`);
await this._producer.init();

// Create options for handlers
Expand All @@ -75,15 +75,15 @@ class FSPIOPEventHandler {
}

async stop() {
this._logger.info('stop');
this._logger.isInfoEnabled() && this._logger.info('stop');
await Promise.all([
this._consumer?.destroy(),
this._producer?.destroy(),
]);
}

async _messageHandler(message) {
this._logger.info(`Got domain event message: ${message.getName()}`);
this._logger.isInfoEnabled() && this._logger.info(`Got domain event message: ${message.getName()}`);
// TODO: Handle errors validation here
switch (message.getName()) {
case PartyInfoRequestedDmEvt.name: {
Expand All @@ -99,7 +99,7 @@ class FSPIOPEventHandler {
break;
}
default: {
this._logger.debug(`${message?.getName()}:${message?.getKey()} - Skipping unknown domain event`);
this._logger.isDebugEnabled() && this._logger.debug(`${message?.getName()}:${message?.getKey()} - Skipping unknown domain event`);
return;
}
}
Expand Down
Loading

0 comments on commit 345d9fc

Please sign in to comment.