From 9cc3a88bd753a1f96788dfe94c72f862fa4425d7 Mon Sep 17 00:00:00 2001 From: e-cloud Date: Sat, 16 Jul 2016 13:49:24 +0800 Subject: [PATCH] refactor: more small refactor 1. drop semver related code with no need to detect node version 2. drop license declaration in log4js.js for there is one in the project dir 3. other changes --- lib/appenders/clustered.js | 2 + lib/appenders/dateFile.js | 4 +- lib/appenders/file.js | 6 +-- lib/appenders/fileSync.js | 4 +- lib/appenders/mailgun.js | 4 +- lib/connect-logger.js | 2 + lib/layouts.js | 10 ++--- lib/log4js.js | 81 +++++++++++++++++++++----------------- lib/logger.js | 2 +- 9 files changed, 62 insertions(+), 53 deletions(-) diff --git a/lib/appenders/clustered.js b/lib/appenders/clustered.js index aff720d..0e11d58 100755 --- a/lib/appenders/clustered.js +++ b/lib/appenders/clustered.js @@ -1,3 +1,5 @@ +'use strict'; + const cluster = require('cluster'); const log4js = require('../log4js'); diff --git a/lib/appenders/dateFile.js b/lib/appenders/dateFile.js index d673876..fe36cde 100644 --- a/lib/appenders/dateFile.js +++ b/lib/appenders/dateFile.js @@ -79,7 +79,7 @@ function shutdown(cb) { return cb(); } - openFiles.forEach(file => { + return openFiles.forEach(file => { if (!file.write(eol, 'utf-8')) { file.once('drain', () => { file.end(complete); @@ -88,8 +88,6 @@ function shutdown(cb) { file.end(complete); } }); - - return cb(); } module.exports.appender = appender; diff --git a/lib/appenders/file.js b/lib/appenders/file.js index af3127b..b9b82bf 100644 --- a/lib/appenders/file.js +++ b/lib/appenders/file.js @@ -115,6 +115,6 @@ function shutdown(cb) { }); } -exports.appender = fileAppender; -exports.configure = configure; -exports.shutdown = shutdown; +module.exports.appender = fileAppender; +module.exports.configure = configure; +module.exports.shutdown = shutdown; diff --git a/lib/appenders/fileSync.js b/lib/appenders/fileSync.js index bd77720..f942f64 100755 --- a/lib/appenders/fileSync.js +++ b/lib/appenders/fileSync.js @@ -192,5 +192,5 @@ function configure(config, options) { ); } -exports.appender = fileAppender; -exports.configure = configure; +module.exports.appender = fileAppender; +module.exports.configure = configure; diff --git a/lib/appenders/mailgun.js b/lib/appenders/mailgun.js index 1164318..1f58392 100644 --- a/lib/appenders/mailgun.js +++ b/lib/appenders/mailgun.js @@ -1,6 +1,8 @@ 'use strict'; const layouts = require('../layouts'); +const mailgunFactory = require('mailgun-js'); + let layout; let config; let mailgun; @@ -31,7 +33,7 @@ function configure(_config) { layout = layouts.layout(_config.layout.type, _config.layout); } - mailgun = require('mailgun-js')({ + mailgun = mailgunFactory({ apiKey: _config.apikey, domain: _config.domain }); diff --git a/lib/connect-logger.js b/lib/connect-logger.js index f93652d..0654ed2 100755 --- a/lib/connect-logger.js +++ b/lib/connect-logger.js @@ -1,3 +1,5 @@ +'use strict'; + const levels = require('./levels'); const DEFAULT_FORMAT = ':remote-addr - -' + ' ":method :url HTTP/:http-version"' + diff --git a/lib/layouts.js b/lib/layouts.js index 69c0d8e..2193b15 100644 --- a/lib/layouts.js +++ b/lib/layouts.js @@ -4,7 +4,6 @@ const dateFormat = require('./date_format'); const os = require('os'); const eol = os.EOL || '\n'; const util = require('util'); -const semver = require('semver'); const layoutMakers = { messagePassThrough: function () { return messagePassThroughLayout; }, basic: function () { return basicLayout; }, @@ -31,10 +30,7 @@ function wrapErrorsWithInspect(items) { if ((item instanceof Error) && item.stack) { return { inspect: function () { - if (semver.satisfies(process.version, '>=6')) { - return util.format(item); - } - return `${util.format(item)}\n${item.stack}`; + return util.format(item); } }; } @@ -82,11 +78,11 @@ function colorize(str, style) { return colorizeStart(style) + str + colorizeEnd(style); } -function timestampLevelAndCategory(loggingEvent, colour, timezoneOffest) { +function timestampLevelAndCategory(loggingEvent, colour, timezoneOffset) { return colorize( formatLogData( '[%s] [%s] %s - ' - , dateFormat.asString(loggingEvent.startTime, timezoneOffest) + , dateFormat.asString(loggingEvent.startTime, timezoneOffset) , loggingEvent.level , loggingEvent.categoryName ) diff --git a/lib/log4js.js b/lib/log4js.js index dfe2395..27390c2 100644 --- a/lib/log4js.js +++ b/lib/log4js.js @@ -1,18 +1,5 @@ /* eslint no-prototype-builtins:1,no-restricted-syntax:[1, "ForInStatement"] */ 'use strict'; -/* - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ /** * @fileoverview log4js is a library to log in JavaScript in similar manner @@ -50,8 +37,11 @@ const layouts = require('./layouts'); const levels = require('./levels'); const loggerModule = require('./logger'); const Logger = loggerModule.Logger; +const connectLogger = require('./connect-logger').connectLogger; + +require('./appenders/console'); + const ALL_CATEGORIES = '[all]'; -let appenders = {}; const loggers = {}; const appenderMakers = {}; const appenderShutdowns = {}; @@ -62,12 +52,13 @@ const defaultConfig = { replaceConsole: false }; -require('./appenders/console'); +let appenders = {}; function hasLogger(logger) { return loggers.hasOwnProperty(logger); } +// todo: this method should be moved back to levels.js, but for loop require, need some refactor levels.forName = function (levelStr, levelVal) { let level; if (typeof levelStr === 'string' && typeof levelVal === 'number') { @@ -116,7 +107,6 @@ function doesAppenderContainsLogger(appenderCategory, loggerCategory) { return normalizedLoggerCategory.substring(0, normalizedAppenderCategory.length) === normalizedAppenderCategory; } - /** * Get a logger instance. Instance is cached on categoryName level. * @static @@ -414,7 +404,7 @@ function loadAppender(appender, appenderModule) { throw new Error(`Invalid log4js appender: ${util.inspect(appender)}`); } - module.exports.appenders[appender] = appenderModule.appender.bind(appenderModule); + log4js.appenders[appender] = appenderModule.appender.bind(appenderModule); if (appenderModule.shutdown) { appenderShutdowns[appender] = appenderModule.shutdown.bind(appenderModule); } @@ -463,32 +453,51 @@ function shutdown(cb) { } /** - * - * @name Log4js + * @name log4js + * @namespace Log4js + * @property getBufferedLogger + * @property getLogger + * @property getDefaultLogger + * @property hasLogger + * @property addAppender + * @property loadAppender + * @property clearAppenders + * @property configure + * @property shutdown + * @property replaceConsole + * @property restoreConsole + * @property levels + * @property setGlobalLogLevel + * @property layouts + * @property appenders + * @property appenderMakers + * @property connectLogger */ -module.exports = { - getBufferedLogger: getBufferedLogger, - getLogger: getLogger, - getDefaultLogger: getDefaultLogger, - hasLogger: hasLogger, +const log4js = { + getBufferedLogger, + getLogger, + getDefaultLogger, + hasLogger, - addAppender: addAppender, - loadAppender: loadAppender, - clearAppenders: clearAppenders, - configure: configure, - shutdown: shutdown, + addAppender, + loadAppender, + clearAppenders, + configure, + shutdown, - replaceConsole: replaceConsole, - restoreConsole: restoreConsole, + replaceConsole, + restoreConsole, - levels: levels, - setGlobalLogLevel: setGlobalLogLevel, + levels, + setGlobalLogLevel, - layouts: layouts, + layouts, appenders: {}, - appenderMakers: appenderMakers, - connectLogger: require('./connect-logger').connectLogger + appenderMakers, + connectLogger }; +module.exports = log4js; + // set ourselves up configure(); diff --git a/lib/logger.js b/lib/logger.js index 51b5b10..420726a 100644 --- a/lib/logger.js +++ b/lib/logger.js @@ -32,7 +32,7 @@ class LoggingEvent { /** * Logger to log messages. - * use {@see Log4js.getLogger(String)} to get an instance. + * use {@see log4js#getLogger(String)} to get an instance. * * @name Logger * @namespace Log4js