YUKI Hiroshi
null+****@clear*****
Fri Nov 2 17:57:54 JST 2012
YUKI Hiroshi 2012-11-02 17:57:54 +0900 (Fri, 02 Nov 2012) New Revision: 42c7bbe78c5aa1e9c6f65f1bc35ab5f0b0ba6869 https://github.com/groonga/gcs/commit/42c7bbe78c5aa1e9c6f65f1bc35ab5f0b0ba6869 Log: Use winston instead of custom logger Modified files: lib/api/2011-02-01/batch.js lib/api/2011-02-01/configuration.js lib/api/2011-02-01/search.js lib/logger.js lib/server.js package.json Modified: lib/api/2011-02-01/batch.js (+3 -4) =================================================================== --- lib/api/2011-02-01/batch.js 2012-11-01 19:03:59 +0900 (10e084d) +++ lib/api/2011-02-01/batch.js 2012-11-02 17:57:54 +0900 (af93788) @@ -1,5 +1,6 @@ var BatchProcessor = require('../../batch/processor').Processor; var Domain = require('../../database').Domain; +var logger = require('../../logger'); function createErrorBody(errors) { errors = errors.map(function(error) { @@ -53,8 +54,7 @@ exports.createHandler = function(context, config) { try { processor.validate(batches); } catch (error) { - if (config.errorLogger) - config.errorLogger.log(error); + logger.error(error); return response.send(JSON.stringify(error.result)); } @@ -65,8 +65,7 @@ exports.createHandler = function(context, config) { response.send(JSON.stringify(result)); }) .error(function(error) { - if (config.errorLogger) - config.errorLogger.log(error); + logger.error(error); response.send(error.message + '\n' + error.stack, 502); }); Modified: lib/api/2011-02-01/configuration.js (+2 -2) =================================================================== --- lib/api/2011-02-01/configuration.js 2012-11-01 19:03:59 +0900 (020615f) +++ lib/api/2011-02-01/configuration.js 2012-11-02 17:57:54 +0900 (f1f61f4) @@ -4,6 +4,7 @@ var Domain = require('../../database').Domain; var dateFormat = require('dateformat'); var xmlbuilder = require('../../xmlbuilder'); var ipv4 = require('../../ipv4'); +var logger = require('../../logger'); var uuid = require('node-uuid'); exports.version = path.basename(__dirname); @@ -472,8 +473,7 @@ exports.createHandler = function(context, config) { try { handler(context, request, response, config); } catch (error) { - if (config.errorLogger) - config.errorLogger.log(error); + logger.error(error); var body = createCommonErrorResponse('InternalFailure', error); response.contentType('application/xml'); Modified: lib/api/2011-02-01/search.js (+4 -6) =================================================================== --- lib/api/2011-02-01/search.js 2012-11-01 19:03:59 +0900 (51fe36c) +++ lib/api/2011-02-01/search.js 2012-11-02 17:57:54 +0900 (2eb8014) @@ -2,6 +2,7 @@ var SelectQuery = require('../../select-query').SelectQuery; var IndexField = require('../../database').IndexField; +var logger = require('../../logger'); var dummyRid = '000000000000000000000000000000000000000000000000000000000000000'; @@ -139,8 +140,7 @@ exports.createHandler = function(context, config) { try { selectQuery = new SelectQuery(request, context); } catch(error) { - if (config.errorLogger) - config.errorLogger.log(error); + logger.error(error); var errorData = { rid: dummyRid }; if (error.message == 'validation error') { @@ -154,14 +154,12 @@ exports.createHandler = function(context, config) { select(context, selectQuery, function(error, data, numFoundRecords, facets) { - if (error && config.errorLogger) - config.errorLogger.log(error); + logger.error(error); var finishedAt = new Date(); var elapsedTime = finishedAt.getTime() - startedAt.getTime(); - if (config.queryLogger) - config.queryLogger.log(JSON.stringify(selectQuery.selectOptions) + ' [' + elapsedTime + 'msec)'); + logger.query(selectQuery, elapsedTime); if (error) { var body = createErrorBody({ Modified: lib/logger.js (+30 -50) =================================================================== --- lib/logger.js 2012-11-01 19:03:59 +0900 (73de8c0) +++ lib/logger.js 2012-11-02 17:57:54 +0900 (debe1e4) @@ -1,57 +1,37 @@ -var fs = require('fs'); -var path = require('path'); -var CLI = require(__dirname + '/../lib/command-line').CommandLineInterface; +var winston = require('winston'); -function Logger(filePath) { - this.init(filePath); -} -Logger.prototype = { - init: function(filePath) { - filePath = CLI.resolve(filePath); - var flags = path.existsSync(filePath) ? 'a' : 'w'; - this.stream = fs.createWriteStream(filePath, { flags: flags }); - }, - getTimestamp: function() { - var date = new Date(); +var loggers = {}; + +function getLogger(context) { + if (loggers[context]) + return loggers[context]; - var offsetMinutes = date.getTimezoneOffset(); - var timezoneOffset = ('0' + (Math.abs(offsetMinutes) / 60)).slice(-2) + ':' + - ('0' + (Math.abs(offsetMinutes) % 60)).slice(-2); - if (offsetMinutes > 0) { - timezoneOffset = '-' + timezoneOffset; - } else { - timezoneOffset = '+' + timezoneOffset; - } + var logger = new winston.Logger({ + transports: [ + new winston.transports.Console() + ] + }); + return loggers[context] = logger; +} - return date.getFullYear() + '-' + - ('0' + (date.getMonth() + 1)).slice(-2) + '-' + - ('0' + (date.getDate())).slice(-2) + 'T' + - ('0' + (date.getHours())).slice(-2) + ':' + - ('0' + (date.getMinutes())).slice(-2) + ':' + - ('0' + (date.getSeconds())).slice(-2) + '.' + - date.getMilliseconds() + - timezoneOffset; - }, - log: function(message) { - var timestamp = '[' + this.getTimestamp() + ']'; - message.split('\n').forEach(function(line) { - this.stream.write(timestamp + ' ' + line + '\n'); - }, this); +function logError(error) { + var message = error; + if (error.stack) { + message = error + '\n' + error.stack; } -}; + getLogger('error').error(message); +} +exports.error = logError; -function ErrorLogger(filePath) { - this.logger = new Logger(filePath); +function logQuery(selectQuery, elapsedTime) { + var message = JSON.stringify(selectQuery.selectOptions) + + ' (' + elapsedTime + 'msec)'; + getLogger('query').info(message); } -ErrorLogger.prototype = { - log: function(error) { - var message = error; - if (error.stack) { - message = error + '\n' + error.stack; - } - this.logger.log(message); - } -}; +exports.query = logQuery; -exports.Logger = Logger; -exports.ErrorLogger = ErrorLogger; +function setLogFilePath(context, path) { + var logger = getLogger(context); + logger.add(winston.transports.File, { filename: path }); +} +exports.setLogFilePath = setLogFilePath; Modified: lib/server.js (+4 -6) =================================================================== --- lib/server.js 2012-11-01 19:03:59 +0900 (e2f99da) +++ lib/server.js 2012-11-02 17:57:54 +0900 (e88b708) @@ -2,10 +2,8 @@ var express = require('express'); var fs = require('fs'); var path = require('path'); var nroonga = require('./wrapped-nroonga'); -var CLI = require(__dirname + '/../lib/command-line').CommandLineInterface; -var logger = require(__dirname + '/../lib/logger'); -var Logger = logger.Logger; -var ErrorLogger = logger.ErrorLogger; +var CLI = require('./command-line').CommandLineInterface; +var logger = require('./logger'); var api = require('./api'); function prepareConfigurations(config) { @@ -35,10 +33,10 @@ function prepareLoggers(application, config) { application.use(express.logger({ stream: accessLogStream })); } if (config.queryLogPath) { - config.queryLogger = new Logger(config.queryLogPath); + logger.setLogFilePath('query', CLI.resolve(config.queryLogPath)); } if (config.errorLogPath) { - config.errorLogger = new ErrorLogger(config.errorLogPath); + logger.setLogFilePath('error', CLI.resolve(config.errorLogPath)); } } Modified: package.json (+1 -0) =================================================================== --- package.json 2012-11-01 19:03:59 +0900 (8a38129) +++ package.json 2012-11-02 17:57:54 +0900 (9632aee) @@ -27,6 +27,7 @@ "mkdirp": "", "node-uuid": "", "nroonga": "", + "winston": "", "xml2js": "0.1.14", "xmlbuilder": "0.3.11" }, -------------- next part -------------- HTML����������������������������...Download