From 3717163071e8615991f7eee995fc6f64a88e8320 Mon Sep 17 00:00:00 2001 From: wangkunmeng Date: Tue, 1 Dec 2020 19:53:14 +0800 Subject: [PATCH] =?UTF-8?q?update=EF=BC=9A=E5=8D=87=E7=BA=A7log4js?= =?UTF-8?q?=EF=BC=8C=E5=8D=87=E7=BA=A7=E5=A4=A7=E7=89=88=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .eslintignore | 2 + .eslintrc.js | 89 ++++ .gitignore | 72 +++- .jshintrc | 19 - README.md | 97 +++-- examples/log.js | 8 +- examples/log4js.json | 58 +++ lib/logger.js | 452 ++++++++++---------- package-lock.json | 981 +++++++++++++++++++++++++++++++++++++++++++ package.json | 8 +- 10 files changed, 1485 insertions(+), 301 deletions(-) create mode 100644 .eslintignore create mode 100644 .eslintrc.js delete mode 100644 .jshintrc create mode 100644 examples/log4js.json create mode 100644 package-lock.json diff --git a/.eslintignore b/.eslintignore new file mode 100644 index 0000000..82ab3da --- /dev/null +++ b/.eslintignore @@ -0,0 +1,2 @@ +**/node_modules/* +!**/*.js \ No newline at end of file diff --git a/.eslintrc.js b/.eslintrc.js new file mode 100644 index 0000000..b6ad99e --- /dev/null +++ b/.eslintrc.js @@ -0,0 +1,89 @@ +/** + * Created by wangkm on 2019-3-15. + * Email: 417079820@qq.com. + */ +module.exports = { + 'env': { + 'es6': true, + 'node': true, + 'browser': true, + 'commonjs': true, + }, + 'extends': 'eslint:recommended', + 'parserOptions': { + 'ecmaVersion': 2018, + 'sourceType': 'module' + }, + 'root': true, //以当前目录为根目录 + 'globals': { + '__stack': true, //global + }, + 'rules': { + 'no-console': 0, //允许使用console + 'indent': [ + 'error', + 2, + { + 'SwitchCase': 1 + } + ], + 'linebreak-style': [ + 'error', + 'unix' + ], + 'quotes': [ + 'error', + 'single' + ], + 'semi': [ + 'error', + 'always' + ], + 'brace-style': 'error', //大括号风格 + 'block-spacing': 'error', //空格 + 'for-direction': 'error', //禁止 for 循环出现方向错误的循环,比如 for (i = 0; i < 10; i--) + 'no-await-in-loop': 0, //禁止将 await 写在循环里,因为这样就无法同时发送多个异步请求了(@off 要求太严格了,有时需要在循环中写 await) + 'no-class-assign': 2, //禁止给类赋值 + 'no-cond-assign': 2, //禁止在条件表达式中使用赋值语句 + 'no-const-assign': 2, //禁止修改const声明的变量 + 'no-constant-condition': 0, //@off 禁止在条件中使用常量表达式 if(true) if(1) + 'no-dupe-keys': 2, //在创建对象字面量时不允许键重复 {a:1,a:1} + 'no-dupe-args': 2, //函数参数不能重复 + 'no-duplicate-case': 2, //switch中的case标签不能重复 + 'no-empty': 2, //块语句中的内容不能为空 + 'no-empty-character-class': 2, //正则表达式中的[]内容不能为空 + 'no-func-assign': 2, //禁止重复的函数声明 + 'no-irregular-whitespace': 2, //不能有不规则的空格 + 'no-loop-func': 1, //禁止在循环中使用函数(如果没有引用外部变量不形成闭包就可以) + 'no-multi-spaces': 1, //不能用多余的空格 + 'no-mixed-spaces-and-tabs': [2, false], //禁止混用tab和空格 + 'no-multiple-empty-lines': [1, {'max': 2}], //空行最多不能超过2行 + 'no-spaced-func': 2, //函数调用时 函数名与()之间不能有空格 + 'no-trailing-spaces': 1, //一行结束后面不要有空格 + 'no-this-before-super': 0, //在调用super()之前不能使用this或super + 'no-throw-literal': 2, //禁止抛出字面量错误 throw "error"; + 'no-undef': 2, //不能有未定义的变量 + 'no-unused-vars': 1, //该规则旨在消除未使用的变量,函数和函数的参数 + 'no-var': 0, //禁用var,用let和const代替 + 'no-with': 2, //禁用with + 'array-bracket-spacing': [2, 'never'], //是否允许非空数组里面有多余的空格 + 'arrow-parens': 0, //箭头函数用小括号括起来 + 'arrow-spacing': 0, //=>的前/后括号 + 'accessor-pairs': 0, //在对象中使用getter/setter + 'camelcase': 1, //驼峰法命名 + 'comma-style': [2, 'last'], //逗号风格,换行时在行首还是行尾 + 'complexity': [0, 15], //循环复杂度brace-style + 'curly': [2, 'all'], //必须使用 if(){} 中的{} + 'default-case': 2, //switch语句最后必须有default + 'max-depth': ['error', 4], //嵌套深度 + 'id-length': [1, {'min': 1, 'max': 30}], //变量名长度 + 'valid-jsdoc': 0, //jsdoc规则 + 'key-spacing': 2, //键名和键值之间要有空格。 + 'keyword-spacing': [2, {'before': true, 'after': true}], //此规则强制执行围绕关键字和关键字标记的一致空格 + 'space-before-function-paren': 0, //函数前空格 + 'space-before-blocks': 'error', //此规则将强化块之前的间距一致性。它只适用于不以新行开始的块 + 'new-cap': 1, //构造函数的名字以大写字母开始。 + 'comma-spacing': [2, {'before': false, 'after': true}], //,后添加空格 + 'space-infix-ops': ['error', {'int32Hint': false}], //这条规则旨在确保中缀操作员周围有空间。 + } +}; \ No newline at end of file diff --git a/.gitignore b/.gitignore index af19e0c..ece3095 100644 --- a/.gitignore +++ b/.gitignore @@ -1,9 +1,63 @@ -.project -logs/ -config/ -node_modules/* -.settings/ -**/*.svn -*.svn -*.sublime-project -*.sublime-workspace +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* + +# Runtime data +pids +*.pid +*.seed +*.pid.lock + +# Directory for instrumented libs generated by jscoverage/JSCover +lib-cov + +# Coverage directory used by tools like istanbul +coverage + +# nyc test coverage +.nyc_output + +# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) +.grunt + +# Bower dependency directory (https://bower.io/) +bower_components + +# node-waf configuration +.lock-wscript + +# Compiled binary addons (https://nodejs.org/api/addons.html) +build/Release + +# Dependency directories +node_modules/ +jspm_packages/ + +# TypeScript v1 declaration files +typings/ + +# Optional npm cache directory +.npm + +# Optional eslint cache +.eslintcache + +# Optional REPL history +.node_repl_history + +# Output of 'npm pack' +*.tgz + +# Yarn Integrity file +.yarn-integrity + +# dotenv environment variables file +.env + +# next.js build output +.next + +.idea \ No newline at end of file diff --git a/.jshintrc b/.jshintrc deleted file mode 100644 index bb3389c..0000000 --- a/.jshintrc +++ /dev/null @@ -1,19 +0,0 @@ -{ - "predef": [ - "describe", - "it", - "before", - "after", - "window", - "__resources__" - ], - "es5": true, - "node": true, - "eqeqeq": true, - "undef": true, - "curly": true, - "bitwise": true, - "immed": false, - "newcap": true, - "nonew": true -} diff --git a/README.md b/README.md index 16a6342..d5effa5 100644 --- a/README.md +++ b/README.md @@ -9,34 +9,66 @@ npm install pomelo-logger ``` ## Features -### log prefix -besides category, you can output prefix as you like in your log -prefix can be filename, serverId, serverType, host etc -to use this feature, you just pass prefix params to getLogger function -``` -var logger = require('pomelo-logger').getLogger(category, prefix1, prefix2, ...); -``` - log output msg will output with prefix ahead - -### get line number in debug -when in debug environment, you may want to get the line number of the log -to use this feature, add this code -``` -process.env.LOGGER_LINE = true; -``` - -in pomelo, you just configure the log4js file and set **lineDebug** for true -``` +### config +in pomelo, you just configure the log4js file +```json { - "appenders": [ - ], - - "levels": { - }, - - "replaceConsole": true, - - "lineDebug": true + "appenders": { + "console": { + "type": "console", + "layout": { + "type": "pattern", + "pattern": "%[[%d{yyyy-MM-dd hh:mm:ss}]-[%p]-[pid=%z]-[%f{1}-%l] %m%]" + } + }, + "rpc-log": { + "type": "dateFile", + "filename": "./logs/rpc-log-${opts:serverId}.log", + "alwaysIncludePattern": true, + "pattern": "yyyy-MM-dd.log", + "layout": { + "type": "pattern", + "pattern": "%[[%d{yyyy-MM-dd hh:mm:ss}]-[%p]-[pid=%z]-[%f{2}-%l] %m%]" + } + }, + "crash": { + "type": "file", + "filename": "./logs/crash.log", + "maxLogSize": 31457280, + "backups": 5, + "layout": { + "type": "pattern", + "pattern": "%[[%d{yyyy-MM-dd hh:mm:ss}]-[%p]-[pid=%z]-[%f-%l] %m%]" + } + } + }, + "categories": { + "default": { + "appenders": [ + "console" + ], + "level": "debug", + "enableCallStack": true + }, + "rpc-log": { + "appenders": [ + "rpc-log", + "console" + ], + "level": "error", + "enableCallStack": true + }, + "crash": { + "appenders": [ + "crash", + "console" + ], + "level": "error", + "enableCallStack": true + } + }, + "rawMessage": false, + "reloadSecs": 180 } ``` @@ -53,7 +85,7 @@ in pomelo, you just configure the log4js file and set **rawMessage** for true "appenders": [ ], - "levels": { + "categories": { }, "replaceConsole": true, @@ -61,6 +93,14 @@ in pomelo, you just configure the log4js file and set **rawMessage** for true "rawMessage": true } ``` +### log prefix +besides category, you can output prefix as you like in your log +prefix can be filename, serverId, serverType, host etc +to use this feature, you just pass prefix params to getLogger function +``` +var logger = require('pomelo-logger').getLogger(category, prefix1, prefix2, ...); +``` + log output msg will output with prefix ahead ### dynamic configure logger level in pomelo logger configuration file log4js.json, you can add reloadSecs option. The reloadSecs means reload logger configuration file every given time. For example @@ -76,7 +116,6 @@ log.js ``` var logger = require('pomelo-logger').getLogger('log', __filename, process.pid); -process.env.LOGGER_LINE = true; logger.info('test1'); logger.warn('test2'); logger.error('test3'); diff --git a/examples/log.js b/examples/log.js index 4311417..97cebaf 100644 --- a/examples/log.js +++ b/examples/log.js @@ -1,6 +1,8 @@ -var logger = require('pomelo-logger').getLogger('log', __filename, process.pid); +const log = require('../lib/logger'); +log.configure(require('./log4js.json'), {serverId: 12}); +let logger = log.getLogger('rpc-log', __filename); -process.env.LOGGER_LINE = true; logger.info('test1'); logger.warn('test2'); -logger.error('test3'); \ No newline at end of file +logger.error('test3'); +log.getLogger('crash', __filename).error('one'); \ No newline at end of file diff --git a/examples/log4js.json b/examples/log4js.json new file mode 100644 index 0000000..afd3e04 --- /dev/null +++ b/examples/log4js.json @@ -0,0 +1,58 @@ +{ + "appenders": { + "console": { + "type": "console", + "layout": { + "type": "pattern", + "pattern": "%[[%d{yyyy-MM-dd hh:mm:ss}]-[%p]-[pid=%z]-[%f{1}-%l] %m%]" + } + }, + "rpc-log": { + "type": "dateFile", + "filename": "./logs/rpc-log-${opts:serverId}.log", + "alwaysIncludePattern": true, + "pattern": "yyyy-MM-dd.log", + "layout": { + "type": "pattern", + "pattern": "%[[%d{yyyy-MM-dd hh:mm:ss}]-[%p]-[pid=%z]-[%f{2}-%l] %m%]" + } + }, + "crash": { + "type": "file", + "filename": "./logs/crash.log", + "maxLogSize": 31457280, + "backups": 5, + "layout": { + "type": "pattern", + "pattern": "%[[%d{yyyy-MM-dd hh:mm:ss}]-[%p]-[pid=%z]-[%f-%l] %m% %s]" + } + } + }, + "categories": { + "default": { + "appenders": [ + "console" + ], + "level": "debug", + "enableCallStack": true + }, + "rpc-log": { + "appenders": [ + "rpc-log", + "console" + ], + "level": "error", + "enableCallStack": true + }, + "crash": { + "appenders": [ + "crash", + "console" + ], + "level": "error", + "enableCallStack": true + } + }, + "rawMessage": false, + "reloadSecs": 180 +} diff --git a/lib/logger.js b/lib/logger.js index f7c6137..5fdbe70 100644 --- a/lib/logger.js +++ b/lib/logger.js @@ -1,123 +1,124 @@ -var log4js = require('log4js'); -var fs = require('fs'); -var util = require('util'); - - -var funcs = { - 'env': doEnv, - 'args': doArgs, - 'opts': doOpts +const fs = require('fs'); +const util = require('util'); +const log4js = require('log4js'); + +const funcs = { + 'env': doEnv, + 'args': doArgs, + 'opts': doOpts }; function getLogger(categoryName) { - var args = arguments; - var prefix = ""; - for (var i = 1; i < args.length; i++) { - if (i !== args.length - 1) - prefix = prefix + args[i] + "] ["; - else - prefix = prefix + args[i]; - } - if (typeof categoryName === 'string') { - // category name is __filename then cut the prefix path - categoryName = categoryName.replace(process.cwd(), ''); - } - var logger = log4js.getLogger(categoryName); - var pLogger = {}; - for (var key in logger) { - pLogger[key] = logger[key]; - } - - ['log', 'debug', 'info', 'warn', 'error', 'trace', 'fatal'].forEach(function(item) { - pLogger[item] = function() { - var p = ""; - if (!process.env.RAW_MESSAGE) { - if (args.length > 1) { - p = "[" + prefix + "] "; - } - if (args.length && process.env.LOGGER_LINE) { - p = getLine() + ": " + p; - } - p = colorize(p, colours[item]); - } - - if (args.length) { - arguments[0] = p + arguments[0]; - } - logger[item].apply(logger, arguments); - } - }); - return pLogger; -}; + let args = arguments; + let prefix = ''; + for (let i = 1; i < args.length; i++) { + if (i !== args.length - 1) { + prefix = prefix + args[i] + '] ['; + } else { + prefix = prefix + args[i]; + } + } + if (typeof categoryName === 'string') { + // category name is __filename then cut the prefix path + categoryName = categoryName.replace(process.cwd(), ''); + } + let logger = log4js.getLogger(categoryName); + // 堆栈加一 + let parseCallStack = logger.parseCallStack; + logger.parseCallStack = (data) => { + return parseCallStack(data, 5); + }; + let pLogger = {}; + for (let key in logger) { + pLogger[key] = logger[key]; + } + + ['log', 'debug', 'info', 'warn', 'error', 'trace', 'fatal'].forEach(function(item) { + pLogger[item] = function() { + let p = ''; + if (!process.env.RAW_MESSAGE) { + if (args.length > 1) { + p = '[' + prefix + '] '; + } + p = colorize(p, colours[item]); + } + + if (args.length) { + arguments[0] = p + arguments[0]; + } + logger[item].apply(logger, arguments); + }; + }); + return pLogger; +} -var configState = {}; +let configState = {}; function initReloadConfiguration(filename, reloadSecs) { - if (configState.timerId) { - clearInterval(configState.timerId); - delete configState.timerId; - } - configState.filename = filename; - configState.lastMTime = getMTime(filename); - configState.timerId = setInterval(reloadConfiguration, reloadSecs * 1000); -}; + if (configState.timerId) { + clearInterval(configState.timerId); + delete configState.timerId; + } + configState.filename = filename; + configState.lastMTime = getMTime(filename); + configState.timerId = setInterval(reloadConfiguration, reloadSecs * 1000); +} function getMTime(filename) { - var mtime; - try { - mtime = fs.statSync(filename).mtime; - } catch (e) { - throw new Error("Cannot find file with given path: " + filename); - } - return mtime; -}; + let mtime; + try { + mtime = fs.statSync(filename).mtime; + } catch (e) { + throw new Error('Cannot find file with given path: ' + filename); + } + return mtime; +} function loadConfigurationFile(filename) { - if (filename) { - return JSON.parse(fs.readFileSync(filename, "utf8")); - } - return undefined; -}; + if (filename) { + return JSON.parse(fs.readFileSync(filename, 'utf8')); + } + return undefined; +} function reloadConfiguration() { - var mtime = getMTime(configState.filename); - if (!mtime) { - return; - } - if (configState.lastMTime && (mtime.getTime() > configState.lastMTime.getTime())) { - configureOnceOff(loadConfigurationFile(configState.filename)); - } - configState.lastMTime = mtime; -}; + let mtime = getMTime(configState.filename); + if (!mtime) { + return; + } + if (configState.lastMTime && (mtime.getTime() > configState.lastMTime.getTime())) { + configureOnceOff(loadConfigurationFile(configState.filename)); + } + configState.lastMTime = mtime; +} function configureOnceOff(config) { - if (config) { - try { - configureLevels(config.levels); - if (config.replaceConsole) { - log4js.replaceConsole(); - } else { - log4js.restoreConsole(); - } - } catch (e) { - throw new Error( - "Problem reading log4js config " + util.inspect(config) + - ". Error was \"" + e.message + "\" (" + e.stack + ")" - ); - } - } -}; + if (config) { + try { + configureLevels(config.levels); + if (config.replaceConsole) { + log4js.replaceConsole(); + } else { + log4js.restoreConsole(); + } + } catch (e) { + throw new Error( + 'Problem reading log4js config ' + util.inspect(config) + '. Error was "' + e.message + '" (' + e.stack + ')' + ); + } + } +} function configureLevels(levels) { - if (levels) { - for (var category in levels) { - if (levels.hasOwnProperty(category)) { - log4js.getLogger(category).setLevel(levels[category]); - } - } - } -}; + if (levels) { + for (let category in levels) { + if (Object.prototype.hasOwnProperty.call(levels, category)) { + log4js.getLogger(category).setLevel(levels[category]); + } + } + } +} /** * Configure the logger. @@ -130,183 +131,160 @@ function configureLevels(levels) { * * @param {String|Object} config configure file name or configure object * @param {Object} opts options - * @return {Void} */ function configure(config, opts) { - var filename = config; - config = config || process.env.LOG4JS_CONFIG; - opts = opts || {}; + let filename = config; + config = config || process.env.LOG4JS_CONFIG; + opts = opts || {}; - if (typeof config === 'string') { - config = JSON.parse(fs.readFileSync(config, "utf8")); - } + if (typeof config === 'string') { + config = JSON.parse(fs.readFileSync(config, 'utf8')); + } - if (config) { - config = replaceProperties(config, opts); - } + if (config) { + config = replaceProperties(config, opts); + } - if (config && config.lineDebug) { - process.env.LOGGER_LINE = true; - } + if (config && config.rawMessage) { + process.env.RAW_MESSAGE = true; + } - if (config && config.rawMessage) { - process.env.RAW_MESSAGE = true; - } + if (typeof filename === 'string' && filename.length && config && config.reloadSecs) { + initReloadConfiguration(filename, config.reloadSecs); + } - if (filename && config && config.reloadSecs) { - initReloadConfiguration(filename, config.reloadSecs); - } + // config object could not turn on the auto reload configure file in log4js - // config object could not turn on the auto reload configure file in log4js - - log4js.configure(config, opts); -}; + log4js.configure(config, opts); +} function replaceProperties(configObj, opts) { - if (configObj instanceof Array) { - for (var i = 0, l = configObj.length; i < l; i++) { - configObj[i] = replaceProperties(configObj[i], opts); - } - } else if (typeof configObj === 'object') { - var field; - for (var f in configObj) { - if (!configObj.hasOwnProperty(f)) { - continue; - } - - field = configObj[f]; - if (typeof field === 'string') { - configObj[f] = doReplace(field, opts); - } else if (typeof field === 'object') { - configObj[f] = replaceProperties(field, opts); - } - } - } - - return configObj; + if (typeof configObj !== 'object') { + return configObj; + } + for (let f in configObj) { + let field = configObj[f]; + if (typeof field === 'string') { + configObj[f] = doReplace(field, opts); + } else if (typeof field === 'object') { + configObj[f] = replaceProperties(field, opts); + } + } + return configObj; } function doReplace(src, opts) { - if (!src) { - return src; - } - - var ptn = /\$\{(.*?)\}/g; - var m, pro, ts, scope, name, defaultValue, func, res = '', - lastIndex = 0; - while ((m = ptn.exec(src))) { - pro = m[1]; - ts = pro.split(':'); - if (ts.length !== 2 && ts.length !== 3) { - res += pro; - continue; - } - - scope = ts[0]; - name = ts[1]; - if (ts.length === 3) { - defaultValue = ts[2]; - } - - func = funcs[scope]; - if (!func && typeof func !== 'function') { - res += pro; - continue; - } - - res += src.substring(lastIndex, m.index); - lastIndex = ptn.lastIndex; - res += (func(name, opts) || defaultValue); - } - - if (lastIndex < src.length) { - res += src.substring(lastIndex); - } - - return res; + if (!src) { + return src; + } + + let ptn = /\$\{(.*?)\}/g; + let m, pro, ts, scope, name, defaultValue, func, res = '', + lastIndex = 0; + while ((m = ptn.exec(src))) { + pro = m[1]; + ts = pro.split(':'); + if (ts.length !== 2 && ts.length !== 3) { + res += pro; + continue; + } + + scope = ts[0]; + name = ts[1]; + if (ts.length === 3) { + defaultValue = ts[2]; + } + + func = funcs[scope]; + if (!func && typeof func !== 'function') { + res += pro; + continue; + } + + res += src.substring(lastIndex, m.index); + lastIndex = ptn.lastIndex; + res += (func(name, opts) || defaultValue); + } + + if (lastIndex < src.length) { + res += src.substring(lastIndex); + } + + return res; } function doEnv(name) { - return process.env[name]; + return process.env[name]; } function doArgs(name) { - return process.argv[name]; + return process.argv[name]; } function doOpts(name, opts) { - return opts ? opts[name] : undefined; -} - -function getLine() { - var e = new Error(); - // now magic will happen: get line number from callstack - if(process.platform === "win32") { - return e.stack.split('\n')[3].split(':')[2]; - } - return e.stack.split('\n')[3].split(':')[1]; + return opts ? opts[name] : undefined; } function colorizeStart(style) { - return style ? '\x1B[' + styles[style][0] + 'm' : ''; + return style ? '\x1B[' + styles[style][0] + 'm' : ''; } function colorizeEnd(style) { - return style ? '\x1B[' + styles[style][1] + 'm' : ''; + return style ? '\x1B[' + styles[style][1] + 'm' : ''; } /** * Taken from masylum's fork (https://github.com/masylum/log4js-node) */ function colorize(str, style) { - return colorizeStart(style) + str + colorizeEnd(style); + return colorizeStart(style) + str + colorizeEnd(style); } -var styles = { - //styles - 'bold': [1, 22], - 'italic': [3, 23], - 'underline': [4, 24], - 'inverse': [7, 27], - //grayscale - 'white': [37, 39], - 'grey': [90, 39], - 'black': [90, 39], - //colors - 'blue': [34, 39], - 'cyan': [36, 39], - 'green': [32, 39], - 'magenta': [35, 39], - 'red': [31, 39], - 'yellow': [33, 39] +let styles = { + // styles + 'bold': [1, 22], + 'italic': [3, 23], + 'underline': [4, 24], + 'inverse': [7, 27], + // grayscale + 'white': [37, 39], + 'grey': [90, 39], + 'black': [90, 39], + // colors + 'blue': [34, 39], + 'cyan': [36, 39], + 'green': [32, 39], + 'magenta': [35, 39], + 'red': [31, 39], + 'yellow': [33, 39] }; -var colours = { - 'all': "grey", - 'trace': "blue", - 'debug': "cyan", - 'info': "green", - 'warn': "yellow", - 'error': "red", - 'fatal': "magenta", - 'off': "grey" +let colours = { + 'all': 'grey', + 'trace': 'blue', + 'debug': 'cyan', + 'info': 'green', + 'warn': 'yellow', + 'error': 'red', + 'fatal': 'magenta', + 'off': 'grey' }; module.exports = { - getLogger: getLogger, - getDefaultLogger: log4js.getDefaultLogger, + getLogger: getLogger, + getDefaultLogger: log4js.getDefaultLogger, - addAppender: log4js.addAppender, - loadAppender: log4js.loadAppender, - clearAppenders: log4js.clearAppenders, - configure: configure, + addAppender: log4js.addAppender, + loadAppender: log4js.loadAppender, + clearAppenders: log4js.clearAppenders, + configure: configure, - replaceConsole: log4js.replaceConsole, - restoreConsole: log4js.restoreConsole, + replaceConsole: log4js.replaceConsole, + restoreConsole: log4js.restoreConsole, - levels: log4js.levels, - setGlobalLogLevel: log4js.setGlobalLogLevel, + levels: log4js.levels, + setGlobalLogLevel: log4js.setGlobalLogLevel, - layouts: log4js.layouts, - appenders: log4js.appenders + layouts: log4js.layouts, + appenders: log4js.appenders }; \ No newline at end of file diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..cf6f754 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,981 @@ +{ + "name": "pomelo-logger", + "version": "0.1.7", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@ungap/promise-all-settled": { + "version": "1.1.2", + "resolved": "https://registry.npm.taobao.org/@ungap/promise-all-settled/download/@ungap/promise-all-settled-1.1.2.tgz", + "integrity": "sha1-qlgEJxHW4ydd033Fl+XTHowpCkQ=", + "dev": true + }, + "ansi-colors": { + "version": "4.1.1", + "resolved": "https://registry.npm.taobao.org/ansi-colors/download/ansi-colors-4.1.1.tgz", + "integrity": "sha1-y7muJWv3UK8eqzRPIpqif+lLo0g=", + "dev": true + }, + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/ansi-regex/download/ansi-regex-3.0.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fansi-regex%2Fdownload%2Fansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npm.taobao.org/ansi-styles/download/ansi-styles-4.3.0.tgz?cache=0&sync_timestamp=1606792255762&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fansi-styles%2Fdownload%2Fansi-styles-4.3.0.tgz", + "integrity": "sha1-7dgDYornHATIWuegkG7a00tkiTc=", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "anymatch": { + "version": "3.1.1", + "resolved": "https://registry.npm.taobao.org/anymatch/download/anymatch-3.1.1.tgz", + "integrity": "sha1-xV7PAhheJGklk5kxDBc84xIzsUI=", + "dev": true, + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npm.taobao.org/argparse/download/argparse-1.0.10.tgz", + "integrity": "sha1-vNZ5HqWuCXJeF+WtmIE0zUCz2RE=", + "dev": true, + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/balanced-match/download/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "binary-extensions": { + "version": "2.1.0", + "resolved": "https://registry.npm.taobao.org/binary-extensions/download/binary-extensions-2.1.0.tgz?cache=0&sync_timestamp=1593261363626&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fbinary-extensions%2Fdownload%2Fbinary-extensions-2.1.0.tgz", + "integrity": "sha1-MPpAyef+B9vIlWeM0ocCTeokHdk=", + "dev": true + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npm.taobao.org/brace-expansion/download/brace-expansion-1.1.11.tgz?cache=0&sync_timestamp=1601898201980&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fbrace-expansion%2Fdownload%2Fbrace-expansion-1.1.11.tgz", + "integrity": "sha1-PH/L9SnYcibz0vUrlm/1Jx60Qd0=", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npm.taobao.org/braces/download/braces-3.0.2.tgz", + "integrity": "sha1-NFThpGLujVmeI23zNs2epPiv4Qc=", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "browser-stdout": { + "version": "1.3.1", + "resolved": "https://registry.npm.taobao.org/browser-stdout/download/browser-stdout-1.3.1.tgz", + "integrity": "sha1-uqVZ7hTO1zRSIputcyZGfGH6vWA=", + "dev": true + }, + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npm.taobao.org/camelcase/download/camelcase-5.3.1.tgz?cache=0&sync_timestamp=1603921799543&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcamelcase%2Fdownload%2Fcamelcase-5.3.1.tgz", + "integrity": "sha1-48mzFWnhBoEd8kL3FXJaH0xJQyA=", + "dev": true + }, + "chalk": { + "version": "4.1.0", + "resolved": "https://registry.npm.taobao.org/chalk/download/chalk-4.1.0.tgz?cache=0&sync_timestamp=1591686984650&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fchalk%2Fdownload%2Fchalk-4.1.0.tgz", + "integrity": "sha1-ThSHCmGNni7dl92DRf2dncMVZGo=", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "chokidar": { + "version": "3.4.3", + "resolved": "https://registry.npm.taobao.org/chokidar/download/chokidar-3.4.3.tgz?cache=0&sync_timestamp=1602585354255&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fchokidar%2Fdownload%2Fchokidar-3.4.3.tgz", + "integrity": "sha1-wd84IxRI5FykrFiObHlXO6alfVs=", + "dev": true, + "requires": { + "anymatch": "~3.1.1", + "braces": "~3.0.2", + "fsevents": "~2.1.2", + "glob-parent": "~5.1.0", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.5.0" + } + }, + "cliui": { + "version": "5.0.0", + "resolved": "https://registry.npm.taobao.org/cliui/download/cliui-5.0.0.tgz?cache=0&sync_timestamp=1604880017635&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcliui%2Fdownload%2Fcliui-5.0.0.tgz", + "integrity": "sha1-3u/P2y6AB4SqNPRvoI4GhRx7u8U=", + "dev": true, + "requires": { + "string-width": "^3.1.0", + "strip-ansi": "^5.2.0", + "wrap-ansi": "^5.1.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npm.taobao.org/ansi-regex/download/ansi-regex-4.1.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fansi-regex%2Fdownload%2Fansi-regex-4.1.0.tgz", + "integrity": "sha1-i5+PCM8ay4Q3Vqg5yox+MWjFGZc=", + "dev": true + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npm.taobao.org/string-width/download/string-width-3.1.0.tgz", + "integrity": "sha1-InZ74htirxCBV0MG9prFG2IgOWE=", + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npm.taobao.org/strip-ansi/download/strip-ansi-5.2.0.tgz", + "integrity": "sha1-jJpTb+tq/JYr36WxBKUJHBrZwK4=", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npm.taobao.org/color-convert/download/color-convert-2.0.1.tgz", + "integrity": "sha1-ctOmjVmMm9s68q0ehPIdiWq9TeM=", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npm.taobao.org/color-name/download/color-name-1.1.4.tgz", + "integrity": "sha1-wqCah6y95pVD3m9j+jmVyCbFNqI=", + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npm.taobao.org/concat-map/download/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "date-format": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/date-format/download/date-format-3.0.0.tgz?cache=0&sync_timestamp=1572559173297&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdate-format%2Fdownload%2Fdate-format-3.0.0.tgz", + "integrity": "sha1-64eANlx9KxURB4+0keZHl4DzrZU=" + }, + "debug": { + "version": "4.3.1", + "resolved": "https://registry.npm.taobao.org/debug/download/debug-4.3.1.tgz?cache=0&sync_timestamp=1606566568533&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdebug%2Fdownload%2Fdebug-4.3.1.tgz", + "integrity": "sha1-8NIpxQXgxtjEmsVT0bE9wYP2su4=", + "requires": { + "ms": "2.1.2" + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npm.taobao.org/decamelize/download/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true + }, + "diff": { + "version": "4.0.2", + "resolved": "https://registry.npm.taobao.org/diff/download/diff-4.0.2.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdiff%2Fdownload%2Fdiff-4.0.2.tgz", + "integrity": "sha1-YPOuy4nV+uUgwRqhnvwruYKq3n0=", + "dev": true + }, + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npm.taobao.org/emoji-regex/download/emoji-regex-7.0.3.tgz?cache=0&sync_timestamp=1603212229889&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Femoji-regex%2Fdownload%2Femoji-regex-7.0.3.tgz", + "integrity": "sha1-kzoEBShgyF6DwSJHnEdIqOTHIVY=", + "dev": true + }, + "escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npm.taobao.org/escape-string-regexp/download/escape-string-regexp-4.0.0.tgz", + "integrity": "sha1-FLqDpdNz49MR5a/KKc9b+tllvzQ=", + "dev": true + }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npm.taobao.org/esprima/download/esprima-4.0.1.tgz", + "integrity": "sha1-E7BM2z5sXRnfkatph6hpVhmwqnE=", + "dev": true + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npm.taobao.org/fill-range/download/fill-range-7.0.1.tgz", + "integrity": "sha1-GRmmp8df44ssfHflGYU12prN2kA=", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "find-up": { + "version": "5.0.0", + "resolved": "https://registry.npm.taobao.org/find-up/download/find-up-5.0.0.tgz?cache=0&sync_timestamp=1597170071453&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ffind-up%2Fdownload%2Ffind-up-5.0.0.tgz", + "integrity": "sha1-TJKBnstwg1YeT0okCoa+UZj1Nvw=", + "dev": true, + "requires": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + } + }, + "flat": { + "version": "5.0.2", + "resolved": "https://registry.npm.taobao.org/flat/download/flat-5.0.2.tgz?cache=0&sync_timestamp=1602723427161&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fflat%2Fdownload%2Fflat-5.0.2.tgz", + "integrity": "sha1-jKb+MyBp/6nTJMMnGYxZglnOskE=", + "dev": true + }, + "flatted": { + "version": "2.0.2", + "resolved": "https://registry.npm.taobao.org/flatted/download/flatted-2.0.2.tgz?cache=0&sync_timestamp=1601444325938&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fflatted%2Fdownload%2Fflatted-2.0.2.tgz", + "integrity": "sha1-RXWyHivO50NKqb5mL0t7X5wrUTg=" + }, + "fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npm.taobao.org/fs-extra/download/fs-extra-8.1.0.tgz", + "integrity": "sha1-SdQ8RaiM2Wd2aMt74bRu/bjS4cA=", + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/fs.realpath/download/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "fsevents": { + "version": "2.1.3", + "resolved": "https://registry.npm.taobao.org/fsevents/download/fsevents-2.1.3.tgz?cache=0&sync_timestamp=1604595212408&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ffsevents%2Fdownload%2Ffsevents-2.1.3.tgz", + "integrity": "sha1-+3OHA66NL5/pAMM4Nt3r7ouX8j4=", + "dev": true, + "optional": true + }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npm.taobao.org/get-caller-file/download/get-caller-file-2.0.5.tgz", + "integrity": "sha1-T5RBKoLbMvNuOwuXQfipf+sDH34=", + "dev": true + }, + "glob": { + "version": "7.1.6", + "resolved": "https://registry.npm.taobao.org/glob/download/glob-7.1.6.tgz?cache=0&sync_timestamp=1577792826619&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fglob%2Fdownload%2Fglob-7.1.6.tgz", + "integrity": "sha1-FB8zuBp8JJLhJVlDB0gMRmeSeKY=", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-parent": { + "version": "5.1.1", + "resolved": "https://registry.npm.taobao.org/glob-parent/download/glob-parent-5.1.1.tgz", + "integrity": "sha1-tsHvQXxOVmPqSY8cRa+saRa7wik=", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + }, + "graceful-fs": { + "version": "4.2.4", + "resolved": "https://registry.npm.taobao.org/graceful-fs/download/graceful-fs-4.2.4.tgz?cache=0&sync_timestamp=1588086924019&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fgraceful-fs%2Fdownload%2Fgraceful-fs-4.2.4.tgz", + "integrity": "sha1-Ila94U02MpWMRl68ltxGfKB6Kfs=" + }, + "growl": { + "version": "1.10.5", + "resolved": "https://registry.npm.taobao.org/growl/download/growl-1.10.5.tgz?cache=0&sync_timestamp=1579108723775&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fgrowl%2Fdownload%2Fgrowl-1.10.5.tgz", + "integrity": "sha1-8nNdwig2dPpnR4sQGBBZNVw2nl4=", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npm.taobao.org/has-flag/download/has-flag-4.0.0.tgz", + "integrity": "sha1-lEdx/ZyByBJlxNaUGGDaBrtZR5s=", + "dev": true + }, + "he": { + "version": "1.2.0", + "resolved": "https://registry.npm.taobao.org/he/download/he-1.2.0.tgz", + "integrity": "sha1-hK5l+n6vsWX922FWauFLrwVmTw8=", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npm.taobao.org/inflight/download/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npm.taobao.org/inherits/download/inherits-2.0.4.tgz", + "integrity": "sha1-D6LGT5MpF8NDOg3tVTY6rjdBa3w=", + "dev": true + }, + "is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npm.taobao.org/is-binary-path/download/is-binary-path-2.1.0.tgz", + "integrity": "sha1-6h9/O4DwZCNug0cPhsCcJU+0Wwk=", + "dev": true, + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npm.taobao.org/is-extglob/download/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/is-fullwidth-code-point/download/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npm.taobao.org/is-glob/download/is-glob-4.0.1.tgz", + "integrity": "sha1-dWfb6fL14kZ7x3q4PEopSCQHpdw=", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npm.taobao.org/is-number/download/is-number-7.0.0.tgz", + "integrity": "sha1-dTU0W4lnNNX4DE0GxQlVUnoU8Ss=", + "dev": true + }, + "is-plain-obj": { + "version": "2.1.0", + "resolved": "https://registry.npm.taobao.org/is-plain-obj/download/is-plain-obj-2.1.0.tgz?cache=0&sync_timestamp=1602541485176&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fis-plain-obj%2Fdownload%2Fis-plain-obj-2.1.0.tgz", + "integrity": "sha1-ReQuN/zPH0Dajl927iFRWEDAkoc=", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/isexe/download/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "js-yaml": { + "version": "3.14.0", + "resolved": "https://registry.npm.taobao.org/js-yaml/download/js-yaml-3.14.0.tgz", + "integrity": "sha1-p6NBcPJqIbsWJCTYray0ETpp5II=", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npm.taobao.org/jsonfile/download/jsonfile-4.0.0.tgz?cache=0&sync_timestamp=1604161912962&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjsonfile%2Fdownload%2Fjsonfile-4.0.0.tgz", + "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npm.taobao.org/locate-path/download/locate-path-6.0.0.tgz?cache=0&sync_timestamp=1597081904643&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Flocate-path%2Fdownload%2Flocate-path-6.0.0.tgz", + "integrity": "sha1-VTIeswn+u8WcSAHZMackUqaB0oY=", + "dev": true, + "requires": { + "p-locate": "^5.0.0" + } + }, + "log-symbols": { + "version": "4.0.0", + "resolved": "https://registry.npm.taobao.org/log-symbols/download/log-symbols-4.0.0.tgz", + "integrity": "sha1-abPMRtIPRI7M23XqH6cz2eghySA=", + "dev": true, + "requires": { + "chalk": "^4.0.0" + } + }, + "log4js": { + "version": "6.3.0", + "resolved": "https://registry.npm.taobao.org/log4js/download/log4js-6.3.0.tgz", + "integrity": "sha1-EN+vu0NDUaPjAnegC5h5RG9xW8s=", + "requires": { + "date-format": "^3.0.0", + "debug": "^4.1.1", + "flatted": "^2.0.1", + "rfdc": "^1.1.4", + "streamroller": "^2.2.4" + } + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npm.taobao.org/minimatch/download/minimatch-3.0.4.tgz?cache=0&sync_timestamp=1579845326598&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fminimatch%2Fdownload%2Fminimatch-3.0.4.tgz", + "integrity": "sha1-UWbihkV/AzBgZL5Ul+jbsMPTIIM=", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "mocha": { + "version": "8.2.1", + "resolved": "https://registry.npm.taobao.org/mocha/download/mocha-8.2.1.tgz?cache=0&sync_timestamp=1604355856236&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmocha%2Fdownload%2Fmocha-8.2.1.tgz", + "integrity": "sha1-8vpogX7Q5TND2YnfZczTWLw6Szk=", + "dev": true, + "requires": { + "@ungap/promise-all-settled": "1.1.2", + "ansi-colors": "4.1.1", + "browser-stdout": "1.3.1", + "chokidar": "3.4.3", + "debug": "4.2.0", + "diff": "4.0.2", + "escape-string-regexp": "4.0.0", + "find-up": "5.0.0", + "glob": "7.1.6", + "growl": "1.10.5", + "he": "1.2.0", + "js-yaml": "3.14.0", + "log-symbols": "4.0.0", + "minimatch": "3.0.4", + "ms": "2.1.2", + "nanoid": "3.1.12", + "serialize-javascript": "5.0.1", + "strip-json-comments": "3.1.1", + "supports-color": "7.2.0", + "which": "2.0.2", + "wide-align": "1.1.3", + "workerpool": "6.0.2", + "yargs": "13.3.2", + "yargs-parser": "13.1.2", + "yargs-unparser": "2.0.0" + }, + "dependencies": { + "debug": { + "version": "4.2.0", + "resolved": "https://registry.npm.taobao.org/debug/download/debug-4.2.0.tgz?cache=0&sync_timestamp=1606566568533&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdebug%2Fdownload%2Fdebug-4.2.0.tgz", + "integrity": "sha1-fxUPk5IOlMWPVXTC/QGjEQ7/5/E=", + "dev": true, + "requires": { + "ms": "2.1.2" + } + } + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npm.taobao.org/ms/download/ms-2.1.2.tgz?cache=0&sync_timestamp=1575472461218&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fms%2Fdownload%2Fms-2.1.2.tgz", + "integrity": "sha1-0J0fNXtEP0kzgqjrPM0YOHKuYAk=" + }, + "nanoid": { + "version": "3.1.12", + "resolved": "https://registry.npm.taobao.org/nanoid/download/nanoid-3.1.12.tgz?cache=0&sync_timestamp=1606781917481&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fnanoid%2Fdownload%2Fnanoid-3.1.12.tgz", + "integrity": "sha1-b3c2xi6NOUIWAeSgx3YjqX6mllQ=", + "dev": true + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/normalize-path/download/normalize-path-3.0.0.tgz", + "integrity": "sha1-Dc1p/yOhybEf0JeDFmRKA4ghamU=", + "dev": true + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npm.taobao.org/once/download/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npm.taobao.org/p-limit/download/p-limit-3.1.0.tgz?cache=0&sync_timestamp=1606288333421&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fp-limit%2Fdownload%2Fp-limit-3.1.0.tgz", + "integrity": "sha1-4drMvnjQ0TiMoYxk/qOOPlfjcGs=", + "dev": true, + "requires": { + "yocto-queue": "^0.1.0" + } + }, + "p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npm.taobao.org/p-locate/download/p-locate-5.0.0.tgz?cache=0&sync_timestamp=1597081785924&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fp-locate%2Fdownload%2Fp-locate-5.0.0.tgz", + "integrity": "sha1-g8gxXGeFAF470CGDlBHJ4RDm2DQ=", + "dev": true, + "requires": { + "p-limit": "^3.0.2" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npm.taobao.org/p-try/download/p-try-2.2.0.tgz", + "integrity": "sha1-yyhoVA4xPWHeWPr741zpAE1VQOY=", + "dev": true + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npm.taobao.org/path-exists/download/path-exists-4.0.0.tgz", + "integrity": "sha1-UTvb4tO5XXdi6METfvoZXGxhtbM=", + "dev": true + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/path-is-absolute/download/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true + }, + "picomatch": { + "version": "2.2.2", + "resolved": "https://registry.npm.taobao.org/picomatch/download/picomatch-2.2.2.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpicomatch%2Fdownload%2Fpicomatch-2.2.2.tgz", + "integrity": "sha1-IfMz6ba46v8CRo9RRupAbTRfTa0=", + "dev": true + }, + "randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npm.taobao.org/randombytes/download/randombytes-2.1.0.tgz", + "integrity": "sha1-32+ENy8CcNxlzfYpE0mrekc9Tyo=", + "dev": true, + "requires": { + "safe-buffer": "^5.1.0" + } + }, + "readdirp": { + "version": "3.5.0", + "resolved": "https://registry.npm.taobao.org/readdirp/download/readdirp-3.5.0.tgz", + "integrity": "sha1-m6dMAZsV02UnjS6Ru4xI17TULJ4=", + "dev": true, + "requires": { + "picomatch": "^2.2.1" + } + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npm.taobao.org/require-directory/download/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true + }, + "require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/require-main-filename/download/require-main-filename-2.0.0.tgz", + "integrity": "sha1-0LMp7MfMD2Fkn2IhW+aa9UqomJs=", + "dev": true + }, + "rfdc": { + "version": "1.1.4", + "resolved": "https://registry.npm.taobao.org/rfdc/download/rfdc-1.1.4.tgz", + "integrity": "sha1-unLME2egzNnPgahws7WL060H+MI=" + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npm.taobao.org/safe-buffer/download/safe-buffer-5.2.1.tgz?cache=0&sync_timestamp=1589129010497&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsafe-buffer%2Fdownload%2Fsafe-buffer-5.2.1.tgz", + "integrity": "sha1-Hq+fqb2x/dTsdfWPnNtOa3gn7sY=", + "dev": true + }, + "serialize-javascript": { + "version": "5.0.1", + "resolved": "https://registry.npm.taobao.org/serialize-javascript/download/serialize-javascript-5.0.1.tgz?cache=0&sync_timestamp=1599740666792&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fserialize-javascript%2Fdownload%2Fserialize-javascript-5.0.1.tgz", + "integrity": "sha1-eIbshIBJpGJGepfT2Rjrsqr5NPQ=", + "dev": true, + "requires": { + "randombytes": "^2.1.0" + } + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/set-blocking/download/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "dev": true + }, + "should": { + "version": "13.2.3", + "resolved": "https://registry.npm.taobao.org/should/download/should-13.2.3.tgz", + "integrity": "sha1-ltjlrPPpe0nYm1H+qlro0H71jxA=", + "dev": true, + "requires": { + "should-equal": "^2.0.0", + "should-format": "^3.0.3", + "should-type": "^1.4.0", + "should-type-adaptors": "^1.0.1", + "should-util": "^1.0.0" + } + }, + "should-equal": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/should-equal/download/should-equal-2.0.0.tgz", + "integrity": "sha1-YHLPgwRzYIZ+aOmLCdcRQ9BO4MM=", + "dev": true, + "requires": { + "should-type": "^1.4.0" + } + }, + "should-format": { + "version": "3.0.3", + "resolved": "https://registry.npm.taobao.org/should-format/download/should-format-3.0.3.tgz", + "integrity": "sha1-m/yPdPo5IFxT04w01xcwPidxJPE=", + "dev": true, + "requires": { + "should-type": "^1.3.0", + "should-type-adaptors": "^1.0.1" + } + }, + "should-type": { + "version": "1.4.0", + "resolved": "https://registry.npm.taobao.org/should-type/download/should-type-1.4.0.tgz", + "integrity": "sha1-B1bYzoRt/QmEOmlHcZ36DUz/XPM=", + "dev": true + }, + "should-type-adaptors": { + "version": "1.1.0", + "resolved": "https://registry.npm.taobao.org/should-type-adaptors/download/should-type-adaptors-1.1.0.tgz", + "integrity": "sha1-QB5/M7VTMDOUTVzYvytlAneS4no=", + "dev": true, + "requires": { + "should-type": "^1.3.0", + "should-util": "^1.0.0" + } + }, + "should-util": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/should-util/download/should-util-1.0.1.tgz", + "integrity": "sha1-+w1xM49TKjoUkhNjni0yy+qLyyg=", + "dev": true + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npm.taobao.org/sprintf-js/download/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true + }, + "streamroller": { + "version": "2.2.4", + "resolved": "https://registry.npm.taobao.org/streamroller/download/streamroller-2.2.4.tgz", + "integrity": "sha1-wZjO1C25QIamGTYIGHzoCl8rDlM=", + "requires": { + "date-format": "^2.1.0", + "debug": "^4.1.1", + "fs-extra": "^8.1.0" + }, + "dependencies": { + "date-format": { + "version": "2.1.0", + "resolved": "https://registry.npm.taobao.org/date-format/download/date-format-2.1.0.tgz?cache=0&sync_timestamp=1572559173297&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdate-format%2Fdownload%2Fdate-format-2.1.0.tgz", + "integrity": "sha1-MdW16iEc9f12TNOLr50DPffhJc8=" + } + } + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npm.taobao.org/string-width/download/string-width-2.1.1.tgz", + "integrity": "sha1-q5Pyeo3BPSjKyBXEYhQ6bZASrp4=", + "dev": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npm.taobao.org/strip-ansi/download/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + }, + "strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npm.taobao.org/strip-json-comments/download/strip-json-comments-3.1.1.tgz?cache=0&sync_timestamp=1594567582667&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstrip-json-comments%2Fdownload%2Fstrip-json-comments-3.1.1.tgz", + "integrity": "sha1-MfEoGzgyYwQ0gxwxDAHMzajL4AY=", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npm.taobao.org/supports-color/download/supports-color-7.2.0.tgz?cache=0&sync_timestamp=1606205010380&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsupports-color%2Fdownload%2Fsupports-color-7.2.0.tgz", + "integrity": "sha1-G33NyzK4E4gBs+R4umpRyqiWSNo=", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npm.taobao.org/to-regex-range/download/to-regex-range-5.0.1.tgz", + "integrity": "sha1-FkjESq58jZiKMmAY7XL1tN0DkuQ=", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + }, + "universalify": { + "version": "0.1.2", + "resolved": "https://registry.npm.taobao.org/universalify/download/universalify-0.1.2.tgz", + "integrity": "sha1-tkb2m+OULavOzJ1mOcgNwQXvqmY=" + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npm.taobao.org/which/download/which-2.0.2.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fwhich%2Fdownload%2Fwhich-2.0.2.tgz", + "integrity": "sha1-fGqN0KY2oDJ+ELWckobu6T8/UbE=", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/which-module/download/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "dev": true + }, + "wide-align": { + "version": "1.1.3", + "resolved": "https://registry.npm.taobao.org/wide-align/download/wide-align-1.1.3.tgz", + "integrity": "sha1-rgdOa9wMFKQx6ATmJFScYzsABFc=", + "dev": true, + "requires": { + "string-width": "^1.0.2 || 2" + } + }, + "workerpool": { + "version": "6.0.2", + "resolved": "https://registry.npm.taobao.org/workerpool/download/workerpool-6.0.2.tgz?cache=0&sync_timestamp=1603880836440&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fworkerpool%2Fdownload%2Fworkerpool-6.0.2.tgz", + "integrity": "sha1-4kG0PY0DPxvrUseFEGlFYDnR1Dg=", + "dev": true + }, + "wrap-ansi": { + "version": "5.1.0", + "resolved": "https://registry.npm.taobao.org/wrap-ansi/download/wrap-ansi-5.1.0.tgz", + "integrity": "sha1-H9H2cjXVttD+54EFYAG/tpTAOwk=", + "dev": true, + "requires": { + "ansi-styles": "^3.2.0", + "string-width": "^3.0.0", + "strip-ansi": "^5.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npm.taobao.org/ansi-regex/download/ansi-regex-4.1.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fansi-regex%2Fdownload%2Fansi-regex-4.1.0.tgz", + "integrity": "sha1-i5+PCM8ay4Q3Vqg5yox+MWjFGZc=", + "dev": true + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npm.taobao.org/ansi-styles/download/ansi-styles-3.2.1.tgz?cache=0&sync_timestamp=1606792255762&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fansi-styles%2Fdownload%2Fansi-styles-3.2.1.tgz", + "integrity": "sha1-QfuyAkPlCxK+DwS43tvwdSDOhB0=", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npm.taobao.org/color-convert/download/color-convert-1.9.3.tgz", + "integrity": "sha1-u3GFBpDh8TZWfeYp0tVHHe2kweg=", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npm.taobao.org/color-name/download/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npm.taobao.org/string-width/download/string-width-3.1.0.tgz", + "integrity": "sha1-InZ74htirxCBV0MG9prFG2IgOWE=", + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npm.taobao.org/strip-ansi/download/strip-ansi-5.2.0.tgz", + "integrity": "sha1-jJpTb+tq/JYr36WxBKUJHBrZwK4=", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npm.taobao.org/wrappy/download/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "y18n": { + "version": "4.0.1", + "resolved": "https://registry.npm.taobao.org/y18n/download/y18n-4.0.1.tgz?cache=0&sync_timestamp=1606777983708&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fy18n%2Fdownload%2Fy18n-4.0.1.tgz", + "integrity": "sha1-jbK4PDHF11CZu4kLI/MJSJHiR9Q=", + "dev": true + }, + "yargs": { + "version": "13.3.2", + "resolved": "https://registry.npm.taobao.org/yargs/download/yargs-13.3.2.tgz", + "integrity": "sha1-rX/+/sGqWVZayRX4Lcyzipwxot0=", + "dev": true, + "requires": { + "cliui": "^5.0.0", + "find-up": "^3.0.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^3.0.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^13.1.2" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npm.taobao.org/ansi-regex/download/ansi-regex-4.1.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fansi-regex%2Fdownload%2Fansi-regex-4.1.0.tgz", + "integrity": "sha1-i5+PCM8ay4Q3Vqg5yox+MWjFGZc=", + "dev": true + }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/find-up/download/find-up-3.0.0.tgz?cache=0&sync_timestamp=1597170071453&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ffind-up%2Fdownload%2Ffind-up-3.0.0.tgz", + "integrity": "sha1-SRafHXmTQwZG2mHsxa41XCHJe3M=", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/locate-path/download/locate-path-3.0.0.tgz?cache=0&sync_timestamp=1597081904643&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Flocate-path%2Fdownload%2Flocate-path-3.0.0.tgz", + "integrity": "sha1-2+w7OrdZdYBxtY/ln8QYca8hQA4=", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npm.taobao.org/p-limit/download/p-limit-2.3.0.tgz?cache=0&sync_timestamp=1606288333421&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fp-limit%2Fdownload%2Fp-limit-2.3.0.tgz", + "integrity": "sha1-PdM8ZHohT9//2DWTPrCG2g3CHbE=", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/p-locate/download/p-locate-3.0.0.tgz?cache=0&sync_timestamp=1597081785924&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fp-locate%2Fdownload%2Fp-locate-3.0.0.tgz", + "integrity": "sha1-Mi1poFwCZLJZl9n0DNiokasAZKQ=", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/path-exists/download/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npm.taobao.org/string-width/download/string-width-3.1.0.tgz", + "integrity": "sha1-InZ74htirxCBV0MG9prFG2IgOWE=", + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npm.taobao.org/strip-ansi/download/strip-ansi-5.2.0.tgz", + "integrity": "sha1-jJpTb+tq/JYr36WxBKUJHBrZwK4=", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, + "yargs-parser": { + "version": "13.1.2", + "resolved": "https://registry.npm.taobao.org/yargs-parser/download/yargs-parser-13.1.2.tgz?cache=0&sync_timestamp=1604886709178&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fyargs-parser%2Fdownload%2Fyargs-parser-13.1.2.tgz", + "integrity": "sha1-Ew8JcC667vJlDVTObj5XBvek+zg=", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + }, + "yargs-unparser": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/yargs-unparser/download/yargs-unparser-2.0.0.tgz", + "integrity": "sha1-8TH5ImkRrl2a04xDL+gJNmwjJes=", + "dev": true, + "requires": { + "camelcase": "^6.0.0", + "decamelize": "^4.0.0", + "flat": "^5.0.2", + "is-plain-obj": "^2.1.0" + }, + "dependencies": { + "camelcase": { + "version": "6.2.0", + "resolved": "https://registry.npm.taobao.org/camelcase/download/camelcase-6.2.0.tgz?cache=0&sync_timestamp=1603921799543&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcamelcase%2Fdownload%2Fcamelcase-6.2.0.tgz", + "integrity": "sha1-kkr4gcnVJaydh/QNlk5c6pgqGAk=", + "dev": true + }, + "decamelize": { + "version": "4.0.0", + "resolved": "https://registry.npm.taobao.org/decamelize/download/decamelize-4.0.0.tgz", + "integrity": "sha1-qkcte/Zg6xXzSU79UxyrfypwmDc=", + "dev": true + } + } + }, + "yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npm.taobao.org/yocto-queue/download/yocto-queue-0.1.0.tgz?cache=0&sync_timestamp=1606290212047&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fyocto-queue%2Fdownload%2Fyocto-queue-0.1.0.tgz", + "integrity": "sha1-ApTrPe4FAo0x7hpfosVWpqrxChs=", + "dev": true + } + } +} diff --git a/package.json b/package.json index 65c50e1..b5dd023 100644 --- a/package.json +++ b/package.json @@ -3,10 +3,10 @@ "version": "0.1.7", "private": false, "dependencies": { - "log4js": "0.6.21" + "log4js": "^6.3.0" }, "devDependencies": { - "should": ">=0.0.1", - "mocha": ">=0.0.1" + "mocha": "^8.2.1", + "should": "^13.2.3" } -} \ No newline at end of file +}