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