Santhosh has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/122339

Change subject: Use a configurable logger
......................................................................

Use a configurable logger

* Uses winston module for configurable logging
* Configured file and console logging

Change-Id: I90728f2258a86b4c7e1583416398113021616088
---
M ContentTranslationService.js
M models/DataModelManager.js
M package.json
A utils/Logger.js
4 files changed, 47 insertions(+), 13 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/services/cxserver 
refs/changes/39/122339/1

diff --git a/ContentTranslationService.js b/ContentTranslationService.js
index 76a8cc1..eef2c35 100644
--- a/ContentTranslationService.js
+++ b/ContentTranslationService.js
@@ -14,16 +14,23 @@
 
 'use strict';
 
-var instanceName, context, port, app, server, io, redis, express, RedisStore, 
args;
+var instanceName, context, port, app, server, io, redis, express, RedisStore, 
logger, args;
 
+logger = require( __dirname + '/utils/Logger.js' );
 express = require( 'express' );
 args = require( 'minimist' )( process.argv.slice( 2 ) );
 port = args.port || 8000;
 app = express();
 server = require( 'http' ).createServer( app );
-io = require( 'socket.io' ).listen( server );
+io = require( 'socket.io' ).listen( server, {
+       logger: {
+               debug: logger.debug,
+               info: logger.info,
+               error: logger.error,
+               warn: logger.warn
+       }
+} );
 redis = require( 'redis' );
-
 // Use Redis as the store for socket.io
 RedisStore = require( 'socket.io/lib/stores/redis' );
 io.set( 'store',
@@ -33,7 +40,6 @@
                redisClient: redis.createClient()
        } )
 );
-
 instanceName = 'worker(' + process.pid + ')';
 // socket.io connection establishment
 io.sockets.on( 'connection', function ( socket ) {
@@ -41,11 +47,11 @@
                CXDataModelManager,
                redisSub = redis.createClient();
 
-       console.log( '[CX] Client connected to ' + instanceName + '). Socket: ' 
+ socket.id );
+       logger.debug( 'Client connected to ' + instanceName + '). Socket: ' + 
socket.id );
        redisSub.subscribe( 'cx' );
        redisSub.on( 'message', function ( channel, message ) {
                socket.emit( 'cx.data.update', JSON.parse( message ) );
-               console.log( '[CX] Received from channel #' + channel + ':' + 
message );
+               logger.debug( 'Received from channel #' + channel + ':' + 
message );
        } );
 
        socket.on( 'cx.init', function ( data ) {
@@ -64,7 +70,7 @@
        } );
 
        socket.on( 'disconnect', function () {
-               console.warn( '[CX] Disconnecting from redis' );
+               logger.debug( 'Disconnecting from redis' );
                redisSub.quit();
        } );
 
@@ -72,7 +78,7 @@
 
 // Everything else goes through this.
 app.use( express.static( __dirname + '/public' ) );
-console.log( '[CX] ' + instanceName + ' ready. Listening on port: ' + port );
+logger.info( instanceName + ' ready. Listening on port: ' + port );
 server.listen( port );
 
 module.exports = app;
diff --git a/models/DataModelManager.js b/models/DataModelManager.js
index 7e0fb14..23a65c4 100644
--- a/models/DataModelManager.js
+++ b/models/DataModelManager.js
@@ -10,7 +10,8 @@
 'use strict';
 
 var CXSegmenter = require( __dirname + '/../segmentation/CXSegmenter.js' 
).CXSegmenter,
-       CXMTInterface = require( __dirname + '/../mt/CXMTInterface.js' 
).CXMTInterface;
+       CXMTInterface = require( __dirname + '/../mt/CXMTInterface.js' 
).CXMTInterface,
+       logger = require( __dirname + '/../utils/Logger.js' );
 /**
  * CXDataModelManager
  * @class
@@ -40,7 +41,7 @@
                        PageLoader = require( __dirname + 
'/../pageloader/PageLoader.js' ).PageLoader;
                        pageloader = new PageLoader( 
dataModelManager.context.sourcePage );
                        pageloader.load().then( function ( data ) {
-                               console.log( '[CX] Page fetched' );
+                               console.log( 'Page fetched' );
                                dataModelManager.context.sourceText = data;
                                segmenter = new CXSegmenter( 
dataModelManager.context.sourceText );
                                segmenter.segment();
@@ -62,7 +63,7 @@
                                        dataModelManager.publish();
                                } );
                        }, function () {
-                               console.error( '[CX] Error in retrieving the 
page ' +
+                               logger.error( 'Error in retrieving the page ' +
                                        dataModelManager.context.sourcePage );
                        } );
 
@@ -83,7 +84,7 @@
        this.context.store.set( this.dataModel.sourcePage, data, function () {
                dataModelManager.context.pub.publish( 'cx', data );
        } );
-       console.log( '[CX] Sending data. Version: ' + this.dataModel.version );
+       logger.debug( 'Sending data. Version: ' + this.dataModel.version );
        this.incrementVersionNumber();
 };
 
diff --git a/package.json b/package.json
index 7807577..ee7f6d8 100644
--- a/package.json
+++ b/package.json
@@ -10,7 +10,8 @@
                "redis": "0.10",
                "request": "*",
                "sax": "0.6.0",
-               "socket.io": "0.9.x"
+               "socket.io": "0.9.x",
+               "winston": "*"
        },
        "devDependencies": {
                "colors": "~0.6.2",
diff --git a/utils/Logger.js b/utils/Logger.js
new file mode 100644
index 0000000..c5eadf7
--- /dev/null
+++ b/utils/Logger.js
@@ -0,0 +1,26 @@
+var winston = require( 'winston' ),
+       env = process.env.NODE_ENV || 'development',
+       logger;
+
+winston.setLevels( winston.config.npm.levels );
+winston.addColors( winston.config.npm.colors );
+logger = new( winston.Logger )( {
+       transports: [
+      new winston.transports.Console( {
+                       level: 'warn', // Only write logs of warn level or 
higher
+                       colorize: true
+               } ),
+      new winston.transports.File( {
+                       level: env === 'development' ? 'debug' : 'info',
+                       filename: 'log/cx-logs.log',
+                       maxsize: 1024 * 1024 * 10 // 10MB
+               } )
+    ],
+       exceptionHandlers: [
+      new winston.transports.File( {
+                       filename: 'log/exceptions.log'
+               } )
+    ]
+} );
+
+module.exports = logger;

-- 
To view, visit https://gerrit.wikimedia.org/r/122339
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I90728f2258a86b4c7e1583416398113021616088
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/services/cxserver
Gerrit-Branch: master
Gerrit-Owner: Santhosh <santhosh.thottin...@gmail.com>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to