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

Reply via email to