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
|
||||
// chalk 和 colors 用法类似。
|
||||
|
||||
const util = require('util')
|
||||
const colors = require('colors')
|
||||
// in uniapp: globalThis.uni && globalThis.UniApp
|
||||
// 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 =
|
||||
globalThis.uni && globalThis.UniApp // && globalThis.getApp?.()?.constructor?.name === 'Vue'
|
||||
? {
|
||||
// 客户端 uniapp
|
||||
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;',
|
||||
...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 }))
|
||||
}
|
||||
|
||||
}
|
||||
process?.release?.name === 'node' ? require('./coco-nodejs.js')
|
||||
: globalThis.window && globalThis.location ? require('./coco-browser.js')
|
||||
: globalThis.uniCloud ? require('./coco-unicloud.js')
|
||||
: require('./coco-app.js')
|
||||
|
@ -2,7 +2,7 @@
|
||||
"name": "wo-core-coco",
|
||||
"version": "1.0.0",
|
||||
"description": "",
|
||||
"main": "coco.js",
|
||||
"main": "cc.js",
|
||||
"scripts": {},
|
||||
"author": "",
|
||||
"license": "ISC",
|
||||
|
Loading…
Reference in New Issue
Block a user