console.log({_at, ...})
This commit is contained in:
parent
98ac10723f
commit
7c0b1bce15
85
cc.js
Normal file
85
cc.js
Normal file
@ -0,0 +1,85 @@
|
|||||||
|
const util = require('util')
|
||||||
|
|
||||||
|
function deepStringify (args = []) {
|
||||||
|
if (globalThis.process?.release?.name === 'node') {
|
||||||
|
return globalThis.wo?.envar?.logDeep ? util.inspect(args, { showHidden: false, depth: null, colors: typeof globalThis.wo?.envar?.logColor === 'undefined' ? true : globalThis.wo?.envar?.logColor }) : args // JSON.stringify(args, null, 2) // in nodejs console, object only shows children of depth < 3 by default. 如果要完整数据,就要进行扩展。
|
||||||
|
} else if (globalThis.uni && globalThis.UniApp) {
|
||||||
|
// 可再分为 web 和 app,通过 #ifdef 或 globalThis.window/location 判断
|
||||||
|
return globalThis.wo?.envar?.logDeep ? util.inspect(args, { showHidden: false, depth: null, colors: typeof globalThis.wo?.envar?.logColor === 'undefined' ? true : globalThis.wo?.envar?.logColor }) : args // in browser console, object is expandable by default.
|
||||||
|
} else if (globalThis.uniCloud) {
|
||||||
|
return args
|
||||||
|
} else {
|
||||||
|
return args
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function routeNow () {
|
||||||
|
if (globalThis.process?.release?.name === 'node') {
|
||||||
|
return {} // { _from: routeNow.caller.name } // new Error().stack?.split('\n') , .match(/at (.*?) /g)[2]
|
||||||
|
} else if (globalThis.uni && globalThis.UniApp) {
|
||||||
|
return { _from: globalThis.getCurrentPages?.()?.pop?.()?.route?.substring?.(6) || 'VueApp' }
|
||||||
|
} else {
|
||||||
|
return {}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function expandArgs (args) {
|
||||||
|
if (args.length > 1) {
|
||||||
|
return { _args: args }
|
||||||
|
} else if (typeof args[0] === 'object') {
|
||||||
|
return args[0]
|
||||||
|
} else {
|
||||||
|
return { _arg: args[0] }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports =
|
||||||
|
{
|
||||||
|
cclog (...args) {
|
||||||
|
console.log(deepStringify({
|
||||||
|
_at: new Date().toJSON(),
|
||||||
|
_type: 'CLOG', // arguments.callee.name doesn't work in nodejs strict mode
|
||||||
|
...routeNow(),
|
||||||
|
...expandArgs(args)
|
||||||
|
}))
|
||||||
|
globalThis.UniApp || console.log(',')
|
||||||
|
},
|
||||||
|
ccinfo (...args) {
|
||||||
|
console.info(deepStringify({
|
||||||
|
_at: new Date().toJSON(),
|
||||||
|
_type: 'CINFO',
|
||||||
|
...routeNow(),
|
||||||
|
...expandArgs(args)
|
||||||
|
}))
|
||||||
|
globalThis.UniApp || console.log(',')
|
||||||
|
},
|
||||||
|
ccwarn (...args) {
|
||||||
|
console.warn(deepStringify({
|
||||||
|
_at: new Date().toJSON(),
|
||||||
|
_type: 'CWARN',
|
||||||
|
...routeNow(),
|
||||||
|
...expandArgs(args)
|
||||||
|
}))
|
||||||
|
globalThis.UniApp || console.log(',')
|
||||||
|
},
|
||||||
|
ccerror (...args) {
|
||||||
|
console.error(deepStringify({
|
||||||
|
_at: new Date().toJSON(),
|
||||||
|
_type: 'CERROR',
|
||||||
|
...routeNow(),
|
||||||
|
...expandArgs(args)
|
||||||
|
}))
|
||||||
|
globalThis.UniApp || console.log(',')
|
||||||
|
},
|
||||||
|
ccdebug (...args) {
|
||||||
|
if (process.env.NODE_ENV !== 'production') {
|
||||||
|
console.debug(deepStringify({
|
||||||
|
_at: new Date().toJSON(),
|
||||||
|
_type: 'CDEBUG',
|
||||||
|
...routeNow(),
|
||||||
|
...expandArgs(args)
|
||||||
|
}))
|
||||||
|
globalThis.UniApp || console.log(',')
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
8
coco-app.js
Normal file
8
coco-app.js
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
module.exports = {
|
||||||
|
cclog () { },
|
||||||
|
ccinfo () { },
|
||||||
|
ccgood () { },
|
||||||
|
ccwarn () { },
|
||||||
|
ccerror () { },
|
||||||
|
ccdebug () { }
|
||||||
|
}
|
56
coco-browser.js
Normal file
56
coco-browser.js
Normal file
@ -0,0 +1,56 @@
|
|||||||
|
function routeNow () {
|
||||||
|
const pageNow = globalThis.getCurrentPages()[globalThis.getCurrentPages().length - 1]
|
||||||
|
return pageNow?.route || 'VueApp'
|
||||||
|
}
|
||||||
|
|
||||||
|
function deepStringify (args = []) {
|
||||||
|
return JSON.stringify(args, null, 2) // used in web browser console, to avoid clicking to expand by hand.
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports =
|
||||||
|
{
|
||||||
|
cclog (...args) {
|
||||||
|
console.log(
|
||||||
|
`%c ${new Date().toJSON()} [LOG] ${routeNow()}`,
|
||||||
|
'background: #808080; border-radius: 0.5em;color: white; font-weight: bold; padding: 2px 0.5em;',
|
||||||
|
deepStringify(args)
|
||||||
|
)
|
||||||
|
},
|
||||||
|
ccinfo (...args) {
|
||||||
|
console.info(
|
||||||
|
`%c ${new Date().toJSON()} [INFO] ${routeNow()}`,
|
||||||
|
'background: #0000ff; border-radius: 0.5em;color: white; font-weight: bold; padding: 2px 0.5em;',
|
||||||
|
deepStringify(args)
|
||||||
|
)
|
||||||
|
},
|
||||||
|
ccgood (...args) {
|
||||||
|
console.info(
|
||||||
|
`%c ${new Date().toJSON()} [GOOD] ${routeNow()}`,
|
||||||
|
'background: #2ecc71; border-radius: 0.5em;color: white; font-weight: bold; padding: 2px 0.5em;',
|
||||||
|
deepStringify(args)
|
||||||
|
)
|
||||||
|
},
|
||||||
|
ccwarn (...args) {
|
||||||
|
console.warn(
|
||||||
|
`%c ${new Date().toJSON()} [WARN] ${routeNow()}`,
|
||||||
|
'background: #f39c12; border-radius: 0.5em;color: white; font-weight: bold; padding: 2px 0.5em;',
|
||||||
|
deepStringify(args)
|
||||||
|
)
|
||||||
|
},
|
||||||
|
ccerror (...args) {
|
||||||
|
console.error(
|
||||||
|
`%c ${new Date().toJSON()} [ERROR] ${routeNow()}`,
|
||||||
|
'background: #c0392b; border-radius: 0.5em;color: white; font-weight: bold; padding: 2px 0.5em;',
|
||||||
|
deepStringify(args)
|
||||||
|
)
|
||||||
|
},
|
||||||
|
ccdebug (...args) {
|
||||||
|
if (process.env.NODE_ENV !== 'production') {
|
||||||
|
console.debug(
|
||||||
|
`%c ${new Date().toJSON()} [DEBUG] ${routeNow()}`,
|
||||||
|
'background: purple; border-radius: 0.5em;color: white; font-weight: bold; padding: 2px 0.5em;',
|
||||||
|
deepStringify(args)
|
||||||
|
)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
}
|
53
coco-nodejs.js
Normal file
53
coco-nodejs.js
Normal file
@ -0,0 +1,53 @@
|
|||||||
|
// colors only works in nodejs cli
|
||||||
|
// consola works in nodejs and browser
|
||||||
|
// chalk 和 colors 用法类似。
|
||||||
|
|
||||||
|
const util = require('util')
|
||||||
|
const colors = require('colors')
|
||||||
|
|
||||||
|
function deepInspect (args = [], colors = false) {
|
||||||
|
return args.map((arg) => util.inspect(arg, { showHidden: false, depth: null, colors })) // 如果用这个方案,在下面的方法里就要用 ...deepInspect(args) 否则会显示成一整字符串
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports =
|
||||||
|
{
|
||||||
|
// 后台服务器命令行。注意如果输出重定向到文件里,会有 ESC[34m2023-10-07T12:32:00.915ZESC[39m 这样的特殊标识。
|
||||||
|
// 在 pm2 里,为了防止特殊标志,可用 --no-color
|
||||||
|
cclog (...args) {
|
||||||
|
console.log(colors.bgWhite(new Date().toJSON()), colors.bgBlue('[LOG]'), ...deepInspect(args, true))
|
||||||
|
},
|
||||||
|
ccinfo (...args) {
|
||||||
|
console.info(colors.bgWhite(new Date().toJSON()), colors.bgBlue('[INFO]'), ...deepInspect(args, true))
|
||||||
|
},
|
||||||
|
ccgood (...args) {
|
||||||
|
console.info(colors.bgWhite(new Date().toJSON()), colors.bgGreen('[GOOD]'), ...deepInspect(args, true))
|
||||||
|
},
|
||||||
|
ccwarn (...args) {
|
||||||
|
// console.warn will appear in pm2's error log
|
||||||
|
console.warn(colors.bgWhite(new Date().toJSON()), colors.bgYellow('[WARN]'), ...deepInspect(args, true))
|
||||||
|
},
|
||||||
|
ccerror (...args) {
|
||||||
|
// console.error will appear in pm2's error log
|
||||||
|
console.error(colors.bgWhite(new Date().toJSON()), colors.bgRed('[ERROR]'), ...deepInspect(args, true))
|
||||||
|
},
|
||||||
|
ccdebug (...args) {
|
||||||
|
if ('production' !== process.env.NODE_ENV) {
|
||||||
|
// 在server的测试环境下. 注意在 uniCloud 环境下,`process.env.NODE_ENV` 不存在. 如要应用本方法,需要手动设置 `process.env.NODE_ENV`
|
||||||
|
console.log(colors.rainbow(new Date().toJSON()), colors.rainbow('[DEBUG]'), ...deepInspect(args, true))
|
||||||
|
}
|
||||||
|
},
|
||||||
|
ccinput (headers, path, indata) {
|
||||||
|
console.log(colors.bgWhite(new Date().toJSON()), colors.bgCyan('[Headers]'), colors.cyan(headers))
|
||||||
|
console.info(colors.bgWhite(new Date().toJSON()), colors.bgBrightBlue(`[INDATA] ${path}`), colors.brightBlue(util.inspect(indata, { showHidden: false, depth: null, colors: false }))) // 已经被 colors.xxx 进行上色了
|
||||||
|
},
|
||||||
|
ccoutput (path, outdata) {
|
||||||
|
console.log(colors.bgWhite(new Date().toJSON()), colors.bgGreen(`[OUTDATA] ${path}`), colors.green(util.inspect(outdata, { showHidden: false, depth: null, colors: false }))) // 已经被 colors.xxx 进行上色了
|
||||||
|
},
|
||||||
|
ccexcept (path, error) {
|
||||||
|
outdata = { _state: 'WOBASE_EXCEPTION', error }
|
||||||
|
console.error(colors.bgWhite(new Date().toJSON()), colors.bgRed(`[EXCEPTION] ${path}`), colors.red(util.inspect(outdata, { showHidden: false, depth: null, colors: true })))
|
||||||
|
},
|
||||||
|
ccunknown (path) {
|
||||||
|
console.warn(colors.bgWhite(new Date().toJSON()), colors.bgYellow(`[UNKNOWN] ${path}`), colors.yellow({ _state: 'WOBASE_API_UNKNOWN', response: 401 }))
|
||||||
|
}
|
||||||
|
}
|
31
coco-unicloud.js
Normal file
31
coco-unicloud.js
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
function deepStringify (args = []) {
|
||||||
|
return JSON.stringify(args, null, 2) // used in web browser console, to avoid clicking to expand by hand.
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
// HBuilder 内置环境的 云空间 console 不支持颜色。为了检查是否支持颜色,测试 uniCloud 是否存在(不存在说明在自己的server环境里),
|
||||||
|
// 或 require('supports-color'),相应的返回不同的函数。
|
||||||
|
cclog (...args) {
|
||||||
|
console.log(new Date().toJSON(), '[LOG]', deepStringify(args))
|
||||||
|
},
|
||||||
|
ccinfo (...args) {
|
||||||
|
console.info(new Date().toJSON(), '[INFO]', deepStringify(args))
|
||||||
|
},
|
||||||
|
ccgood (...args) {
|
||||||
|
console.info(new Date().toJSON(), '[GOOD]', deepStringify(args))
|
||||||
|
},
|
||||||
|
ccwarn (...args) {
|
||||||
|
// console.warn will appear in pm2's error log
|
||||||
|
console.warn(new Date().toJSON(), '[WARN]', deepStringify(args))
|
||||||
|
},
|
||||||
|
ccerror (...args) {
|
||||||
|
// console.error will appear in pm2's error log
|
||||||
|
console.error(new Date().toJSON(), '[ERROR]', deepStringify(args))
|
||||||
|
},
|
||||||
|
ccdebug (...args) {
|
||||||
|
if ('production' !== process.env.NODE_ENV) {
|
||||||
|
// 在server的测试环境下. 注意在 uniCloud 环境下,`process.env.NODE_ENV` 不存在. 如要应用本方法,需要手动设置 `process.env.NODE_ENV`
|
||||||
|
console.log(new Date().toJSON(), '[DEBUG]', deepStringify(args))
|
||||||
|
}
|
||||||
|
},
|
||||||
|
}
|
135
coco.js
135
coco.js
@ -2,135 +2,12 @@
|
|||||||
// consola works in nodejs and browser
|
// consola works in nodejs and browser
|
||||||
// chalk 和 colors 用法类似。
|
// chalk 和 colors 用法类似。
|
||||||
|
|
||||||
const util = require('util')
|
// in uniapp: globalThis.uni && globalThis.UniApp
|
||||||
const colors = require('colors')
|
// in vue: globalThis.getApp?.()?.constructor?.name === 'Vue'
|
||||||
|
|
||||||
function routeNow () {
|
|
||||||
const pageNow = globalThis.getCurrentPages()[globalThis.getCurrentPages().length - 1]
|
|
||||||
return pageNow?.route || 'VueApp'
|
|
||||||
}
|
|
||||||
|
|
||||||
function deepInspect (args = [], colors = false) {
|
|
||||||
return args.map((arg) => util.inspect(arg, { showHidden: false, depth: null, colors }))
|
|
||||||
}
|
|
||||||
|
|
||||||
module.exports =
|
module.exports =
|
||||||
globalThis.uni && globalThis.UniApp // && globalThis.getApp?.()?.constructor?.name === 'Vue'
|
process?.release?.name === 'node' ? require('./coco-nodejs.js')
|
||||||
? {
|
: globalThis.window && globalThis.location ? require('./coco-browser.js')
|
||||||
// 客户端 uniapp
|
: globalThis.uniCloud ? require('./coco-unicloud.js')
|
||||||
cclog (...args) {
|
: require('./coco-app.js')
|
||||||
console.log(
|
|
||||||
`%c ${new Date().toJSON()} [LOG] ${routeNow()}`,
|
|
||||||
'background: #808080; border-radius: 0.5em;color: white; font-weight: bold; padding: 2px 0.5em;',
|
|
||||||
...deepInspect(args)
|
|
||||||
)
|
|
||||||
},
|
|
||||||
ccinfo (...args) {
|
|
||||||
console.info(
|
|
||||||
`%c ${new Date().toJSON()} [INFO] ${routeNow()}`,
|
|
||||||
'background: #0000ff; border-radius: 0.5em;color: white; font-weight: bold; padding: 2px 0.5em;',
|
|
||||||
...deepInspect(args)
|
|
||||||
)
|
|
||||||
},
|
|
||||||
ccgood (...args) {
|
|
||||||
console.info(
|
|
||||||
`%c ${new Date().toJSON()} [GOOD] ${routeNow()}`,
|
|
||||||
'background: #2ecc71; border-radius: 0.5em;color: white; font-weight: bold; padding: 2px 0.5em;',
|
|
||||||
...deepInspect(args)
|
|
||||||
)
|
|
||||||
},
|
|
||||||
ccwarn (...args) {
|
|
||||||
console.warn(
|
|
||||||
`%c ${new Date().toJSON()} [WARN] ${routeNow()}`,
|
|
||||||
'background: #f39c12; border-radius: 0.5em;color: white; font-weight: bold; padding: 2px 0.5em;',
|
|
||||||
...deepInspect(args)
|
|
||||||
)
|
|
||||||
},
|
|
||||||
ccerror (...args) {
|
|
||||||
console.error(
|
|
||||||
`%c ${new Date().toJSON()} [ERROR] ${routeNow()}`,
|
|
||||||
'background: #c0392b; border-radius: 0.5em;color: white; font-weight: bold; padding: 2px 0.5em;',
|
|
||||||
...deepInspect(args)
|
|
||||||
)
|
|
||||||
},
|
|
||||||
ccdebug (...args) {
|
|
||||||
if (process.env.NODE_ENV !== 'production') {
|
|
||||||
console.debug(
|
|
||||||
`%c ${new Date().toJSON()} [DEBUG] ${routeNow()}`,
|
|
||||||
'background: #ff0000; border-radius: 0.5em;color: white; font-weight: bold; padding: 2px 0.5em;',
|
|
||||||
...deepInspect(args)
|
|
||||||
)
|
|
||||||
}
|
|
||||||
},
|
|
||||||
}
|
|
||||||
: typeof uniCloud !== 'undefined'
|
|
||||||
? {
|
|
||||||
// uniCloud 云空间
|
|
||||||
// HBuilder 内置环境的 console 不支持颜色。为了检查是否支持颜色,测试 uniCloud 是否存在(不存在说明在自己的server环境里),
|
|
||||||
// 或 require('supports-color'),相应的返回不同的函数。
|
|
||||||
cclog (...args) {
|
|
||||||
console.log(new Date().toJSON(), '[LOG]', ...deepInspect(args))
|
|
||||||
},
|
|
||||||
ccinfo (...args) {
|
|
||||||
console.info(new Date().toJSON(), '[INFO]', ...deepInspect(args))
|
|
||||||
},
|
|
||||||
ccgood (...args) {
|
|
||||||
console.info(new Date().toJSON(), '[GOOD]', ...deepInspect(args))
|
|
||||||
},
|
|
||||||
ccwarn (...args) {
|
|
||||||
// console.warn will appear in pm2's error log
|
|
||||||
console.warn(new Date().toJSON(), '[WARN]', ...deepInspect(args))
|
|
||||||
},
|
|
||||||
ccerror (...args) {
|
|
||||||
// console.error will appear in pm2's error log
|
|
||||||
console.error(new Date().toJSON(), '[ERROR]', ...deepInspect(args))
|
|
||||||
},
|
|
||||||
ccdebug (...args) {
|
|
||||||
if ('production' !== process.env.NODE_ENV) {
|
|
||||||
// 在server的测试环境下. 注意在 uniCloud 环境下,`process.env.NODE_ENV` 不存在. 如要应用本方法,需要手动设置 `process.env.NODE_ENV`
|
|
||||||
console.log(new Date().toJSON(), '[DEBUG]', ...deepInspect(args))
|
|
||||||
}
|
|
||||||
},
|
|
||||||
}
|
|
||||||
: {
|
|
||||||
// 后台服务器命令行。注意如果输出重定向到文件里,会有 ESC[34m2023-10-07T12:32:00.915ZESC[39m 这样的特殊标识。
|
|
||||||
// 在 pm2 里,为了防止特殊标志,可用 --no-color
|
|
||||||
cclog (...args) {
|
|
||||||
console.log(colors.bgWhite(new Date().toJSON()), colors.bgBlue('[LOG]'), ...deepInspect(args, true))
|
|
||||||
},
|
|
||||||
ccinfo (...args) {
|
|
||||||
console.info(colors.bgWhite(new Date().toJSON()), colors.bgBlue('[INFO]'), ...deepInspect(args, true))
|
|
||||||
},
|
|
||||||
ccgood (...args) {
|
|
||||||
console.info(colors.bgWhite(new Date().toJSON()), colors.bgGreen('[GOOD]'), ...deepInspect(args, true))
|
|
||||||
},
|
|
||||||
ccwarn (...args) {
|
|
||||||
// console.warn will appear in pm2's error log
|
|
||||||
console.warn(colors.bgWhite(new Date().toJSON()), colors.bgYellow('[WARN]'), ...deepInspect(args, true))
|
|
||||||
},
|
|
||||||
ccerror (...args) {
|
|
||||||
// console.error will appear in pm2's error log
|
|
||||||
console.error(colors.bgWhite(new Date().toJSON()), colors.bgRed('[ERROR]'), ...deepInspect(args, true))
|
|
||||||
},
|
|
||||||
ccdebug (...args) {
|
|
||||||
if ('production' !== process.env.NODE_ENV) {
|
|
||||||
// 在server的测试环境下. 注意在 uniCloud 环境下,`process.env.NODE_ENV` 不存在. 如要应用本方法,需要手动设置 `process.env.NODE_ENV`
|
|
||||||
console.log(colors.rainbow(new Date().toJSON()), colors.rainbow('[DEBUG]'), ...deepInspect(args, true))
|
|
||||||
}
|
|
||||||
},
|
|
||||||
ccinput (headers, path, indata) {
|
|
||||||
console.log(colors.bgWhite(new Date().toJSON()), colors.bgCyan('[Headers]'), colors.cyan(headers))
|
|
||||||
console.info(colors.bgWhite(new Date().toJSON()), colors.bgBrightBlue(`[INDATA] ${path}`), colors.brightBlue(util.inspect(indata, { showHidden: false, depth: null, colors: false }))) // 已经被 colors.xxx 进行上色了
|
|
||||||
},
|
|
||||||
ccoutput (path, outdata) {
|
|
||||||
console.log(colors.bgWhite(new Date().toJSON()), colors.bgGreen(`[OUTDATA] ${path}`), colors.green(util.inspect(outdata, { showHidden: false, depth: null, colors: false }))) // 已经被 colors.xxx 进行上色了
|
|
||||||
},
|
|
||||||
ccexcept (path, error) {
|
|
||||||
outdata = { _state: 'WOBASE_EXCEPTION', error }
|
|
||||||
console.error(colors.bgWhite(new Date().toJSON()), colors.bgRed(`[EXCEPTION] ${path}`), colors.red(util.inspect(outdata, { showHidden: false, depth: null, colors: true })))
|
|
||||||
},
|
|
||||||
ccunknown (path) {
|
|
||||||
console.warn(colors.bgWhite(new Date().toJSON()), colors.bgYellow(`[UNKNOWN] ${path}`), colors.yellow({ _state: 'WOBASE_API_UNKNOWN', response: 401 }))
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
"name": "wo-core-coco",
|
"name": "wo-core-coco",
|
||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"description": "",
|
"description": "",
|
||||||
"main": "coco.js",
|
"main": "cc.js",
|
||||||
"scripts": {},
|
"scripts": {},
|
||||||
"author": "",
|
"author": "",
|
||||||
"license": "ISC",
|
"license": "ISC",
|
||||||
|
Loading…
Reference in New Issue
Block a user