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 fromPath () { if (globalThis.process?.release?.name === 'node') { return { _from: new Error().stack?.match?.(/\bat (.*?) /g)?.[2] } // { _from: fromPath.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, // TypeError: 'caller', 'callee', and 'arguments' properties may not be accessed on strict mode functions or the arguments objects for calls to them ...fromPath(), ...expandArgs(args) })) globalThis.UniApp || console.log(',') }, ccinfo (...args) { console.info(deepStringify({ _at: new Date().toJSON(), _type: 'CINFO', ...fromPath(), ...expandArgs(args) })) globalThis.UniApp || console.log(',') }, ccwarn (...args) { console.warn(deepStringify({ _at: new Date().toJSON(), _type: 'CWARN', ...fromPath(), ...expandArgs(args) })) globalThis.UniApp || console.log(',') }, ccerror (...args) { console.error(deepStringify({ _at: new Date().toJSON(), _type: 'CERROR', ...fromPath(), ...expandArgs(args) })) globalThis.UniApp || console.log(',') }, ccdebug (...args) { if (process.env.NODE_ENV !== 'production') { console.debug(deepStringify({ _at: new Date().toJSON(), _type: 'CDEBUG', ...fromPath(), ...expandArgs(args) })) globalThis.UniApp || console.log(',') } } }