@vegajs/logger
Version:
A powerful, flexible, and customizable logging utility for TypeScript and JavaScript applications. Supports multiple log levels, context-aware logging, JSON and text output formats, and external log transmission.
1 lines • 1.95 kB
JavaScript
;var t,e=Object.defineProperty,o=Object.getOwnPropertyDescriptor,s=Object.getOwnPropertyNames,l=Object.prototype.hasOwnProperty,n={};((t,o)=>{for(var s in o)e(t,s,{get:o[s],enumerable:!0})})(n,{Logger:()=>r}),module.exports=(t=n,((t,n,a,r)=>{if(n&&"object"===typeof n||"function"===typeof n)for(let i of s(n))l.call(t,i)||i===a||e(t,i,{get:()=>n[i],enumerable:!(r=o(n,i))||r.enumerable});return t})(e({},"__esModule",{value:!0}),t));const a={DEBUG:"[36m%s[0m",INFO:"[32m%s[0m",WARN:"[33m%s[0m",ERROR:"[31m%s[0m"};class r{constructor(t={}){this.isEnabled=t.isEnabled??!0,this.logLevel=t.logLevel??"DEBUG",this.sendLogCallback=t.sendLogCallback,this.outputFormat=t.outputFormat??"text",this.contextId=t.contextId,this.globalContext=t.globalContext,this.enableColor=t.enableColor??!1}setEnabled(t){this.isEnabled=t}setLogLevel(t){this.logLevel=t}setContextId(t){this.contextId=t}setGlobalContext(t){this.globalContext=t}formatMessage(t,e,o){let s=`[${(new Date).toISOString()}] [${t}]${this.contextId?` [Context: ${this.contextId}]`:""} ${e}`;const l={...this.globalContext,...o};if(l&&Object.keys(l).length>0){s+="json"===this.outputFormat?` | Data: ${JSON.stringify(l)}`:` | Data: ${this.formatData(l)}`}return s}formatData(t){return Object.entries(t).map((([t,e])=>`${t}: ${JSON.stringify(e)}`)).join(", ")}shouldLog(t){const e=["DEBUG","INFO","WARN","ERROR"];return e.indexOf(t)>=e.indexOf(this.logLevel)}sendLog(t){this.sendLogCallback&&this.sendLogCallback(t)}outputToConsole(t,e){if(this.enableColor)console.log(a[t],e);else{({DEBUG:()=>console.debug(e),INFO:()=>console.info(e),WARN:()=>console.warn(e),ERROR:()=>console.error(e)})[t]()}}log(t,e,o){if(!this.isEnabled||!this.shouldLog(t))return;const s=this.formatMessage(t,e,o);this.outputToConsole(t,s),this.sendLog({log:s,message:e,data:o})}debug(t,e){this.log("DEBUG",t,e)}info(t,e){this.log("INFO",t,e)}warn(t,e){this.log("WARN",t,e)}error(t,e){this.log("ERROR",t,e)}}