diff --git a/.gitignore b/.gitignore index ebba76c..863d3e6 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ node_modules/ config.ini +log_* \ No newline at end of file diff --git a/index.js b/index.js index 434ae62..5dee72b 100644 --- a/index.js +++ b/index.js @@ -4,6 +4,34 @@ var telegram = require('node-telegram-bot-api'); var request = require('request'); var http = require('http'); var url = require('url'); +var strftime = require('strftime'); +var winston = require('winston'); + +var logger = new (winston.Logger)({ + transports: [ + new (winston.transports.Console)({ + timestamp: function() { + return strftime('%F %T', new Date()); + }, + formatter: function(options) { + // Return string will be passed to logger. + return options.timestamp() +' '+ options.level.toUpperCase() +' '+ (undefined !== options.message ? options.message : '') + + (options.meta && Object.keys(options.meta).length ? '\n\t'+ JSON.stringify(options.meta) : '' ); + } + }), + new (winston.transports.DailyRotateFile)({ + filename: 'log_', + timestamp: function() { + return strftime('%F %T', new Date()); + }, + formatter: function(options) { + // Return string will be passed to logger. + return options.timestamp() +' '+ options.level.toUpperCase() +' '+ (undefined !== options.message ? options.message : '') + + (options.meta && Object.keys(options.meta).length ? '\n\t'+ JSON.stringify(options.meta) : '' ); + } + }) + ] +}); var chat_ids = {}; @@ -14,9 +42,13 @@ var options = { var bot = new telegram(config.globals.token, options); +function deleteChatId(from) { + delete chat_ids[from]; +} + function sendMessage(destination, message) { //destination = destination.replace(/@TELEGRAM$/, ''); - console.log('Sending reply to ' + destination + ': ' + message); + logger.info('Sending reply to ' + destination + ': ' + message); var chat_id = chat_ids[destination]; bot.sendMessage(chat_id, message); } @@ -24,30 +56,30 @@ function sendMessage(destination, message) { function createHttpResponseServer(){ var httpServer = http.createServer(function(request,response){ var qs = url.parse(request.url, true).query; - console.log('Incoming message from SMSIN server:') - console.log(qs); + logger.info('Incoming request from SMSIN server:', {qs: qs}) + //logger.info(qs); response.end('OK'); sendMessage(qs.PhoneNumber, qs.text); }); httpServer.listen(config.globals.listen_port, function(){ - console.log("listening on " + config.globals.listen_port); + logger.info("listening on " + config.globals.listen_port); }) } createHttpResponseServer(); bot.getMe().then(function (me) { - console.log('Hi my name is %s!', me.username); + logger.info('Hi my name is %s!', me.username); }); bot.on('text', function (msg) { - console.log(msg); + logger.info(msg); var now = Math.floor(new Date().getTime()/1000); if (now - msg.date > config.globals.message_max_age){ var message = 'Pesan "' + msg.text + '" diabaikan. Silahkan diulang kembali.'; - console.log(message) + logger.info(message) bot.sendMessage(msg.chat.id, message); return; } @@ -55,6 +87,7 @@ bot.on('text', function (msg) { var from = msg.from.username.toUpperCase() + config.globals.msisdn_suffix; chat_ids[from] = msg.chat.id; + //setTimeout(deleteChatId, 1000 * 3600 * 24 * 2, from) bot.sendMessage( msg.chat.id,'Pesan anda telah diterima: ' + msg.text); @@ -70,12 +103,12 @@ bot.on('text', function (msg) { request(request_opts, function(err, response, body) { if (err) { - console.log('Request error: ' + err); + logger.info('Request error: ' + err); return; } - console.log('Response: ' + response); - console.log('Body: ' + body); + logger.info('Response: ' + response); + logger.info('Body: ' + body); }); }); diff --git a/package.json b/package.json index e6394d1..f46f8e8 100644 --- a/package.json +++ b/package.json @@ -20,6 +20,8 @@ "dependencies": { "iniparser": "^1.0.5", "node-telegram-bot-api": "^0.12.1", - "request": "^2.61.0" + "request": "^2.61.0", + "strftime": "^0.9.2", + "winston": "^1.0.1" } }