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