mstf-kit
Version:
一个现代化的 JavaScript/TypeScript 工具库,提供了丰富的常用工具函数
2 lines (1 loc) • 2.19 kB
JavaScript
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});var e=(e=>(e[e.NONE=0]="NONE",e[e.ERROR=1]="ERROR",e[e.WARN=2]="WARN",e[e.INFO=3]="INFO",e[e.DEBUG=4]="DEBUG",e))(e||{});class t{constructor(e={}){this.enabled=!1!==e.enabled,this.prefix=e.prefix||"[Logger]",this.showTimestamp=e.showTimestamp||!1,this.customHandler=e.customHandler,"string"==typeof e.level?this.level=this.parseLogLevel(e.level):this.level=void 0!==e.level?e.level:3}parseLogLevel(e){return{none:0,error:1,warn:2,info:3,debug:4}[e.toLowerCase()]||3}formatMessage(...e){const t=[];if(this.showTimestamp){const e=(new Date).toISOString();t.push(`[${e}]`)}return t.push(this.prefix),t.push(...e),t}output(e,t,s,...l){if(!this.enabled||this.level<t)return;const o=this.formatMessage(...l);this.customHandler?this.customHandler(e,this.prefix,...l):s(...o)}debug(...e){this.output("DEBUG",4,console.log,...e)}log(...e){this.output("INFO",3,console.log,...e)}info(...e){this.output("INFO",3,console.info,...e)}warn(...e){this.output("WARN",2,console.warn,...e)}error(...e){this.output("ERROR",1,console.error,...e)}group(e){this.enabled&&this.level>=3&&console.group(this.formatMessage(e).join(" "))}groupCollapsed(e){this.enabled&&this.level>=3&&console.groupCollapsed(this.formatMessage(e).join(" "))}groupEnd(){this.enabled&&this.level>=3&&console.groupEnd()}table(e){this.enabled&&this.level>=3&&console.table(e)}dir(e){this.enabled&&this.level>=4&&console.dir(e)}time(e){this.enabled&&this.level>=4&&console.time(`${this.prefix} ${e}`)}timeEnd(e){this.enabled&&this.level>=4&&console.timeEnd(`${this.prefix} ${e}`)}enable(){this.enabled=!0}disable(){this.enabled=!1}setLevel(e){this.level="string"==typeof e?this.parseLogLevel(e):e}setPrefix(e){this.prefix=e}isEnabled(){return this.enabled}getLevel(){return this.level}createChild(e){return new t({enabled:this.enabled,prefix:`${this.prefix}:${e}`,level:this.level,showTimestamp:this.showTimestamp,customHandler:this.customHandler})}}function s(e={}){return new t(e)}const l=s({enabled:!1,prefix:"[mstf-kit]"});exports.LogLevel=e,exports.Logger=t,exports.createLogger=s,exports.default=t,exports.defaultLogger=l;