Santhosh has uploaded a new change for review. https://gerrit.wikimedia.org/r/209177
Change subject: [WIP] Use bunyan logging so that we can log to logstash by gelf-stream ...................................................................... [WIP] Use bunyan logging so that we can log to logstash by gelf-stream Change-Id: If4cea7fe90d72dedd6420fb0a6d8721b4b7598c3 --- M config.defaults.js M package.json M routes/v1.js M utils/Logger.js 4 files changed, 45 insertions(+), 38 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/mediawiki/services/cxserver refs/changes/77/209177/1 diff --git a/config.defaults.js b/config.defaults.js index 7655532..5656b54 100644 --- a/config.defaults.js +++ b/config.defaults.js @@ -4,8 +4,21 @@ // CX Server port port: 8080, proxy: null, - // Log directory - logDir: 'log', + logging: { + name: 'cxserver', + streams: [ + { + //Use gelf-stream -> logstash + type: 'gelf', + host: 'logstash1003.eqiad.wmnet', + port: 12201, + }, + { + level: 'debug', + stream: process.stdout // log INFO and above to stdout + } + ] + }, // Accept requests from the given domains. * for all domains. allowCORS: '*', // Parsoid API URL diff --git a/package.json b/package.json index 9fa4737..fe2b285 100644 --- a/package.json +++ b/package.json @@ -22,7 +22,11 @@ "sax": "0.6.0", "winston": "*", "html-entities": "1.0.10", - "yargs": "~1.3.1" + "yargs": "~1.3.1", + "bluebird": "~2.2.2", + "bunyan": "^1.3.3", + "extend": "^1.3.0", + "gelf-stream": "^0.2.4" }, "devDependencies": { "assert": "1.1.1", diff --git a/routes/v1.js b/routes/v1.js index 5429c37..f782c7b 100644 --- a/routes/v1.js +++ b/routes/v1.js @@ -11,20 +11,18 @@ PageLoader = require( __dirname + '/../pageloader/PageLoader.js' ).PageLoader, pageloader = new PageLoader( title, sourceLanguage ); - logger.profile( 'Fetch page' ); pageloader.load().then( function ( response ) { var segmenter, segmentedContent; try { - logger.profile( 'Fetch page', { + logger.debug( 'Fetch page', { title: title, sourceLanguage: sourceLanguage } ); - logger.profile( 'Segment page' ); segmenter = new CXSegmenter( response.body, sourceLanguage ); segmenter.segment(); segmentedContent = segmenter.getSegmentedContent(); - logger.profile( 'Segment page', { + logger.debug( 'Segment page', { title: title, sourceLanguage: sourceLanguage } ); @@ -104,7 +102,6 @@ sourceHtmlChunks.push( '</div>' ); sourceHtml = sourceHtmlChunks.join( '' ); - logger.profile( 'MT' ); mtClient.translate( from, to, sourceHtml ).then( function ( data ) { // Prevent XSS by sending json with @@ -119,7 +116,7 @@ .replace( />/g, '\\u003E' ); res.type( 'application/json' ); res.send( json ); - logger.profile( 'MT', { + logger.debug( 'MT', { from: from, to: to } ); @@ -151,11 +148,10 @@ dictClients = require( __dirname + '/../dictionary/' ); dictClient = dictClients[ provider ]; - logger.profile( 'Dictionary lookup' ); dictClient.getTranslations( word, from, to ).then( function ( data ) { res.send( data ); - logger.profile( 'Dictionary lookup', { + logger.debug( 'Dictionary lookup', { word: word, from: from, to: to diff --git a/utils/Logger.js b/utils/Logger.js index 3a9b9c9..decf1c7 100644 --- a/utils/Logger.js +++ b/utils/Logger.js @@ -1,34 +1,28 @@ -var winston = require( 'winston' ), - fs = require( 'fs' ), +var bunyan = require( 'bunyan' ), + gelf_stream = require( 'gelf-stream' ), conf = require( __dirname + '/Conf.js' ), - env = process.env.NODE_ENV || 'development', logger; -winston.setLevels( winston.config.npm.levels ); -winston.addColors( winston.config.npm.colors ); - -if ( !fs.existsSync( conf( 'logDir' ) ) ) { - fs.mkdirSync( conf( 'logDir' ) ); +function processConf( conf ) { + if ( Array.isArray( conf.streams ) ) { + var streams = []; + conf.streams.forEach( function ( stream ) { + if ( stream.type === 'gelf' ) { + // Convert the 'gelf' logger type to a real logger + streams.push( { + type: 'raw', + stream: gelf_stream.forBunyan( stream.host, + stream.port, stream.options ) + } ); + } else { + streams.push( stream ); + } + } ); + conf.streams = streams; + } + return conf; } -logger = new( winston.Logger )( { - transports: [ - new winston.transports.Console( { - level: 'warn', // Only write logs of warn level or higher - colorize: true, - timestamp: true - } ), - new winston.transports.File( { - level: env === 'development' ? 'debug' : 'info', - filename: conf( 'logDir' ) + '/cx-logs.log', - maxsize: 1024 * 1024 * 10 // 10MB - } ) - ], - exceptionHandlers: [ - new winston.transports.File( { - filename: conf( 'logDir' ) + '/exceptions.log' - } ) - ] -} ); +logger = bunyan.createLogger( processConf( conf( 'logging' ) ) ); module.exports = logger; -- To view, visit https://gerrit.wikimedia.org/r/209177 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: newchange Gerrit-Change-Id: If4cea7fe90d72dedd6420fb0a6d8721b4b7598c3 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