From d188dbf4916a0893cf3d7c59387cf1db169b7620 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Aleksander=20=C5=81ukasz?= Date: Tue, 31 Dec 2013 12:31:49 +0100 Subject: [PATCH] logging: basic formatters support --- src/fnpjs/logging/formatters.js | 33 +++++++++++++++++++++++++++++++++ src/fnpjs/logging/logging.js | 28 +++++++++++++++++++++------- 2 files changed, 54 insertions(+), 7 deletions(-) create mode 100644 src/fnpjs/logging/formatters.js diff --git a/src/fnpjs/logging/formatters.js b/src/fnpjs/logging/formatters.js new file mode 100644 index 0000000..5ada6fb --- /dev/null +++ b/src/fnpjs/logging/formatters.js @@ -0,0 +1,33 @@ +define(function() { + +'use strict'; + + +var formatterFromFormatString = function(formatString) { + return function(record) { + var message = formatString + .replace('%level', record.level || '-') + .replace('%message', record.originalMessage) + .replace('%logger', record.loggerName), + currentDate; + if(formatString.indexOf('%datetime') !== -1) { + currentDate = new Date(); + message = message.replace('%datetime', + currentDate.getDate() + '-' + + (currentDate.getMonth() + 1) + '-' + + currentDate.getFullYear() + ' ' + + currentDate.getHours() + ':' + + currentDate.getMinutes() + ':' + + currentDate.getSeconds() + ); + } + return message; + }; +}; + +return { + fromFormatString: formatterFromFormatString, + simple: formatterFromFormatString('[%level] %datetime (%logger) - %message'), + noop: formatterFromFormatString('%message') +}; + +}); diff --git a/src/fnpjs/logging/logging.js b/src/fnpjs/logging/logging.js index 4237f65..9954fad 100644 --- a/src/fnpjs/logging/logging.js +++ b/src/fnpjs/logging/logging.js @@ -4,6 +4,7 @@ define(function(require) { var _ = require('libs/underscore'), handlers = require('fnpjs/logging/handlers'), + formatters = require('fnpjs/logging/formatters'), config = {}, levels = ['debug', 'info', 'warning', 'error', 'critical']; @@ -27,22 +28,35 @@ _.extend(Logger.prototype, { this.config.handlers.forEach(function(handlerName) { var handlerConfig = config.handlers[handlerName], handler = handlerConfig.handler, - handlerLevel = handlerConfig.level || 'info'; + formatter = handlerConfig.formatter, + handlerLevel = handlerConfig.level || 'info', + record = { + originalMessage: message, + level: level, + loggerName: this.name, + data: data + }; if(typeof handler === 'string') { handler = handlers[handlerConfig.handler]; } + if(typeof formatter === 'string') { + if(formatter.indexOf('%') !== -1) { + formatter = formatters.fromFormatString(formatter); + } else { + formatter = formatters[handlerConfig.formatter]; + } + } if(!handler) { throw new Error('Unknown handler: ' + handlerName); } + if(!formatter) { + formatter = formatters.simple; + } if(levels.indexOf(handlerLevel) !== -1 && levels.indexOf(level) >= levels.indexOf(handlerLevel)) { - handler({ - message: message, - level: level, - loggerName: this.name, - data: data - }); + record.message = formatter(record); + handler(record); } }.bind(this)); } -- 2.20.1