console.log({_at, ...})

This commit is contained in:
Luk
2024-02-05 09:50:07 +08:00
parent 98ac10723f
commit 7c0b1bce15
7 changed files with 240 additions and 130 deletions

135
coco.js
View File

@@ -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')