diff --git a/gentong.js b/gentong.js index 0dd3e70..d1845d4 100644 --- a/gentong.js +++ b/gentong.js @@ -9,6 +9,9 @@ var redis = require('redis'); var Router = require('node-simple-router'); +var winston = require('winston'); + +var logger; var config; var httpServer; var redisClient; @@ -52,15 +55,26 @@ function topupRequest(task) { } }; - console.log(options); + logger.info('Creating http request to gateway', {options: options}); request(options, function (error, response, body) { - console.log(logTag + ': DIRECT RESPONSE'); + logger.info(logTag + ': DIRECT RESPONSE'); + + if (error) { + + var error_message = 'Error on http connection to gateway: ' + error; + logger.warn(error_message); + callbackReport(task['requestId'], '91', error_message); + return; - if (error || response.statusCode != 200) { - console.log(logTag + ': ' + 'Gateway Error'); - callbackReport(task['requestId'], '91', 'Gateway Error'); + } + + if (response.statusCode != 200) { + + var error_message = 'Gateway error, http response code: ' + response.statusCode; + logger.warn(error_message); + callbackReport(task['requestId'], '91', error_message); return; } @@ -69,12 +83,12 @@ function topupRequest(task) { xml2js(body, function (err, result) { if (err) { - console.log(body); + logger.warn('Error parsing XML', {response_body: body}); callbackReport(task['requestId'], '40', body); return; } - console.log(result); + logger.info(result); try { if (result.direct_ack.request_status == 'OK') { @@ -92,7 +106,7 @@ function topupRequest(task) { responseMessage = result.direct_ack.info; } catch(err) { - console.log('Exception on parsing request response'); + logger.warn('Exception on parsing request response'); responseCode = 40; responseMessage = 'Invalid response from gateway'; } @@ -118,7 +132,7 @@ function parseSN(message, _config) { var sn_match = message.match(sn_regex); if (sn_match <= 0) { - console.log('SN Not found: ' + message); + logger.info('SN Not found: ' + message); return ''; } @@ -142,7 +156,7 @@ function createServer() { var qs = url.parse(request.url, true).query; - console.log(qs); + logger.info('Got reverse report from gateway', {qs: qs}); if (qs.topup_status == 'S') { response_code = '00'; @@ -166,7 +180,7 @@ function createServer() { } catch(err) { - console.log('Exception on parsing reverse report'); + logger.warn('Exception on parsing reverse report', {exception: err} ); response_code = '40'; } @@ -181,7 +195,7 @@ function createServer() { var key = getRedisKey(qs.ts); redisClient.get(key, function(err, request_id) { if (err) { - console.log('Error when requesting request id for ts:' + qs.ts + ' (' + key + ')'); + logger.warn('Error when requesting request id for ts:' + qs.ts + ' (' + key + ')', {redis_error: err}); return; } @@ -190,7 +204,7 @@ function createServer() { }); httpServer.listen(config.h2h_out.listen_port, function() { - console.log('HTTP Reverse/Report server listen on port ' + config.h2h_out.listen_port); + logger.info('HTTP Reverse/Report server listen on port ' + config.h2h_out.listen_port); }); } @@ -223,13 +237,13 @@ function responseCodeFromMessage(message) { function updateBalance(message) { var balance = getBalanceFromMessage(message); if (balance) { - console.log('Balance: ' + balance); + logger.info('Balance: ' + balance); try { aaa.updateBalance(balance); } catch(err) { - console.log('Exception on partner.updateBalance: ' + err); + logger.warn('Exception on partner.updateBalance: ' + err, {exception: err}); } } } @@ -265,10 +279,18 @@ function start(_config, _callbackReport, options) { config = _config; callbackReport = _callbackReport - if (options) { - if (options.aaa) { + if (options && options.aaa) { aaa = options.aaa; - } + } + + if (options && options.logger) { + logger = options.logger; + } else { + logger = new winston.Logger({ + transports: [ + new (winston.transports.Console)() + ] + }); } createRedisClient(); diff --git a/index.js b/index.js index 6597394..a4da4ae 100644 --- a/index.js +++ b/index.js @@ -3,8 +3,10 @@ var config = iniparser.parseSync('./config.ini'); var aaaHost = config.globals.aaa_host; +var logger = require('sate24/logger.js').start(); + HttpServer = require('sate24/httpserver.js'); -var httpServer = HttpServer.start(config); +var httpServer = HttpServer.start(config, {logger: logger}); var aaa = require('sate24/aaa.js'); HttpServer.setAaa(aaa); @@ -12,8 +14,9 @@ HttpServer.setAaa(aaa); var partner = require('./gentong.js'); var partner_options = { - 'aaa': aaa + 'aaa': aaa, + 'logger': logger } partner.start(config, aaa.callbackReport, partner_options); -aaa.start(config, partner); +aaa.start(config, partner, {logger: logger}); diff --git a/package.json b/package.json index 41c8e4c..f8d5045 100644 --- a/package.json +++ b/package.json @@ -30,6 +30,7 @@ "xml2js": "~0.4.9", "redis": "~0.12.1", "node-simple-router": "~0.9.4-2", - "sate24": "git+http://git@gitlab.kodesumber.com/reload97/node-sate24.git" + "sate24": "git+http://git@gitlab.kodesumber.com/reload97/node-sate24.git", + "winston": "~1.0.1" } }