From 025274bdbf9d56f2c1b64672c3cb534e3a649a0c Mon Sep 17 00:00:00 2001
From: Husni MubaroK <hsunimubarok757@gmail.com>
Date: Tue, 15 Sep 2015 17:14:36 +0700
Subject: [PATCH] Logging Lebih Rapih closed #1

---
 .gitignore   |  1 +
 index.js     | 53 +++++++++++++++++++++++++++++++++++++++++++----------
 package.json |  4 +++-
 3 files changed, 47 insertions(+), 11 deletions(-)

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"
   }
 }
-- 
1.9.0