diff --git a/index.js b/index.js
index 4f960f3..6237ccd 100644
--- a/index.js
+++ b/index.js
@@ -1,13 +1,22 @@
 var iniparser = require('iniparser');
 var config = iniparser.parseSync('./config.ini');
 
+var logger = require('sate24/logger.js').start();
+
 var aaaHost = config.globals.aaa_host;
 
 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);
+
 var partner = require('./partner-scrappingkisel.js');
 
-partner.start(config, aaa.callbackReport);
-aaa.start(config, partner);
+var partner_options = {
+    'aaa': aaa,
+    'logger': logger
+}
+
+partner.start(config, aaa.callbackReport, partner_options);
+aaa.start(config, partner, {logger: logger});
diff --git a/package.json b/package.json
index 805c90b..ef53a22 100644
--- a/package.json
+++ b/package.json
@@ -29,6 +29,7 @@
     "xmlrpc": "~1.3.1",
     "xml2js": "~0.4.9",
     "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.2"
   }
 }
diff --git a/partner-scrappingkisel.js b/partner-scrappingkisel.js
index 843ea75..30a4552 100644
--- a/partner-scrappingkisel.js
+++ b/partner-scrappingkisel.js
@@ -6,9 +6,10 @@ var request = require('request');
 var xml2js = require('xml2js').parseString;
 var strftime = require('strftime');
 var math = require('mathjs');
+var winston = require('winston');
 
 var config;
-var httpServer;
+var logger;
 
 process.env.NODE_TLS_REJECT_UNAUTHORIZED = '0';
 
@@ -41,7 +42,7 @@ function topupRequest(task) {
             product: task['remoteProduct']
         }
     };
-    console.log(options);
+    logger.info('HTTP request to partner', {request_options: options});
 
     request(options, function (error, response, body) {
         if (config.globals.active_requests_count == undefined) {
@@ -51,13 +52,12 @@ function topupRequest(task) {
         }
         
         if (error || response.statusCode != 200) {
-            console.log(logTag + ': Gateway Error');
+            logger.warn(logTag + ': Gateway Error');
             callbackReport(task['requestId'], '40', 'Gateway Error');
             return;
         } 
 
-        console.log(logTag + ': Supplier response:');
-        console.log(body);
+        logger.info('Got supplier response', {response_body: body});
 
         xml2js(body, function (err, result) {
             if (err) {
@@ -65,7 +65,7 @@ function topupRequest(task) {
                 return;
             } 
                 
-            console.log(result);
+            logger.info('Got result from partner', {result: result});
         
             var response_code = '68';
             var message = result.trx_response.info[0].trim();
@@ -113,7 +113,7 @@ function topupRequest(task) {
                 var stock = parseStock(stocks, product);
                 
                 if (stock == 0) {
-                    console.log('OUT OF STOCK: ' + task['product']);
+                    logger.info('OUT OF STOCK: ' + task['product']);
                     config.globals.products = productsWithout(task['product']);
                 }
                 
@@ -122,7 +122,7 @@ function topupRequest(task) {
                 message = 'SN=' + kode_voucher + '; ' + product + ' ' + destination + ' ' + harga + ' ref_num: ' + ref_num + ' kode_voucher: ' + kode_voucher + ' sisa stock: ' + stock + ' unit';
             }
             
-            console.log('Message to AAA: ' + message);
+            logger.info('Message to AAA: ' + message);
             callbackReport(task['requestId'], response_code, message);
         });
     });
@@ -130,7 +130,21 @@ function topupRequest(task) {
 
 function start(_config, _callbackReport) {
     config = _config;
-    callbackReport = _callbackReport
+    callbackReport = _callbackReport;
+    
+    if (options && options.aaa) {
+            aaa = options.aaa;
+    }
+    
+    if (options && options.logger) {
+        logger = options.logger;
+    } else {
+        logger = new winston.Logger({
+            transports: [
+              new (winston.transports.Console)()
+            ]
+        });
+    }
 }
 
 function stockKeyword(product_desc) {