@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.52 kB
JavaScript
const t={DEBUG:"[36m%s[0m",INFO:"[32m%s[0m",WARN:"[33m%s[0m",ERROR:"[31m%s[0m"};class o{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,o,e){let s=`[${(new Date).toISOString()}] [${t}]${this.contextId?` [Context: ${this.contextId}]`:""} ${o}`;const l={...this.globalContext,...e};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,o])=>`${t}: ${JSON.stringify(o)}`)).join(", ")}shouldLog(t){const o=["DEBUG","INFO","WARN","ERROR"];return o.indexOf(t)>=o.indexOf(this.logLevel)}sendLog(t){this.sendLogCallback&&this.sendLogCallback(t)}outputToConsole(o,e){if(this.enableColor)console.log(t[o],e);else{({DEBUG:()=>console.debug(e),INFO:()=>console.info(e),WARN:()=>console.warn(e),ERROR:()=>console.error(e)})[o]()}}log(t,o,e){if(!this.isEnabled||!this.shouldLog(t))return;const s=this.formatMessage(t,o,e);this.outputToConsole(t,s),this.sendLog({log:s,message:o,data:e})}debug(t,o){this.log("DEBUG",t,o)}info(t,o){this.log("INFO",t,o)}warn(t,o){this.log("WARN",t,o)}error(t,o){this.log("ERROR",t,o)}}export{o as Logger};