UNPKG

@backs/logger

Version:

An advanced logger using winston & colorette behind the scenes

11 lines (10 loc) 4.93 kB
import{createLogger as sr,format as s,transports as B}from"winston";import{isColorSupported as gr,black as A,bgBlack as O,blackBright as E,bgBlackBright as w,dim as R,red as c,bgRed as C,redBright as v,bgRedBright as F,bold as S,green as p,bgGreen as k,greenBright as x,bgGreenBright as M,hidden as _,yellow as d,bgYellow as D,yellowBright as U,bgYellowBright as $,italic as j,blue as m,bgBlue as N,blueBright as W,bgBlueBright as Y,underline as I,magenta as u,bgMagenta as z,magentaBright as G,bgMagentaBright as V,strikethrough as Z,cyan as P,bgCyan as H,cyanBright as J,bgCyanBright as q,reset as K,white as Q,bgWhite as X,whiteBright as rr,bgWhiteBright as er,gray as f}from"colorette";import{table as lr,createStream as ar}from"table";import br from"progress";import hr from"moment";var cr=n=>n.replace(/[\u001B\u009B][[\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\d\/#&.:=?%@~_]+)*|[a-zA-Z\d]+(?:;[-a-zA-Z\d\/#&.:=?%@~_]*)*)?\u0007)|(?:(?:\d{1,4}(?:;\d{0,4})*)?[\dA-PR-TZcf-nq-uy=><~]))/g,""),or={b:A,bb:O,bbr:E,bbbr:w,r:c,br:C,rbr:v,brbr:F,g:p,bg:k,gbr:x,bgbr:M,y:d,by:D,ybr:U,bybr:$,bl:m,bbl:N,blbr:W,bblbr:Y,m:u,bm:z,mbr:G,bmbr:V,c:P,bc:H,cbr:J,bcbr:q,w:Q,bw:X,wbr:rr,bwbr:er,gr:f,black:A,bgBlack:O,blackBright:E,bgBlackBright:w,red:c,bgRed:C,redBright:v,bgRedBright:F,green:p,bgGreen:k,greenBright:x,bgGreenBright:M,yellow:d,bgYellow:D,yellowBright:U,bgYellowBright:$,blue:m,bgBlue:N,blueBright:W,bgBlueBright:Y,magenta:u,bgMagenta:z,magentaBright:G,bgMagentaBright:V,cyan:P,bgCyan:H,cyanBright:J,bgCyanBright:q,white:Q,bgWhite:X,whiteBright:rr,bgWhiteBright:er,gray:f},y={d:R,h:_,i:j,u:I,s:Z,b:S,r:K,dim:R,hidden:_,italic:j,underline:I,strikethrough:Z,bold:S,reset:K},h=new RegExp(`%(?<color>(?:${Object.keys(or).sort((n,r)=>r.length-n.length).join("|")}))?(?:_(?<modifiers>(?:${Object.keys(y).sort((n,r)=>r.length-n.length).join("|")})(,(?:${Object.keys(y).sort((n,r)=>r.length-n.length).join("|")}))*))?`,"ig");function pr(n){return new T(n)}var T=class{colorEnabled=!0;options;logger;get isColorEnabled(){return this.colorEnabled}constructor(r){this.options=r??{},this.colorEnabled=process.env.NO_COLOR&&process.env.NO_COLOR!==""?!1:gr?!(this.options.disableColors??!1):!1,this.options.levels||(this.options.log??={debug:()=>process.env.NODE_ENV==="debug"},this.options.log.debug??=()=>process.env.NODE_ENV==="debug"),this.options.levels??=Object.keys(this.DEFAULT_LEVELS),this.options.colors??=this.DEFAULT_COLORS,this.options.transports??=this.DEFAULT_TRANSPORTS,this.logger=sr({levels:this.options.levels.reduce((o,t,i)=>({...o,[t==="log"?"syslog":t]:i}),{}),transports:this.options.transports});let e=o=>typeof o=="function"?o():o;for(let o of this.options.levels)this[o]=(this.options.handlers?.[o]?(t,...i)=>{e(this.options.log?.[o]??!0)&&this.options.handlers?.[o](this.logger[o==="log"?"syslog":o],t,...i)}:void 0)??((t,...i)=>{e(this.options.log?.[o]??!0)&&(t=this.formatArgs(this.stringifyArg(t),i),this.logger[o==="log"?"syslog":o]({message:t,rawMessage:cr(t)}))})}DEFAULT_LEVELS={error:0,warn:1,debug:2,log:3,info:4};DEFAULT_COLORS={error:c,warn:d,debug:u,log:m,info:p};DEFAULT_FORMAT=s.combine(s.timestamp(),s.printf(({timestamp:r,level:e,message:o})=>`${this.color(f,hr(r).format("MM/DD/YYYY HH:mm:ss z"))} ${this.color(this.DEFAULT_COLORS[e==="syslog"?"log":e],this.resolveLevel(e))}: ${o}`));DEFAULT_FILEFORMAT=s.combine(s.timestamp(),s.printf(({timestamp:r,level:e,rawMessage:o})=>JSON.stringify({timestamp:r,level:e,message:o})));DEFAULT_TRANSPORTS=[new B.Console({format:this.DEFAULT_FORMAT}),new B.File({level:"error",format:this.DEFAULT_FILEFORMAT,filename:"logs/errors.log"})];table(r,e){console.log(lr(r,e))}createTableStream(r){return ar(r)}progress(r,e){return new br(r,e)}color(r,e){return this.colorEnabled?r(e):e}resolveLevel(r){let e=Math.max(...this.options.levels.map(o=>`[${o==="syslog"?"log":o}]`.length));return`[${r==="syslog"?"log":r}]`.padEnd(e," ")}stringifyArg(r){if(r instanceof Error){let e=`${r.name}: ${r.message}`;return r.stack&&(e+=` ${r.stack.replace(`${r.toString()} `,"")}`),r.cause&&(e+=` Caused by: ${this.stringifyArg(r.cause)}`),e}return typeof r=="object"?JSON.stringify(r,null,4):Array.isArray(r)?r.map(e=>this.stringifyArg(e)).join(", "):r.toString()}formatArgs(r,e){let o=r.match(h);if(!o)return r;for(let t of o){h.lastIndex=0;let{color:i,modifiers:a}=h.exec(t)?.groups??{};if(!i&&!a)continue;let L=or[i],g=this.stringifyArg(e.shift());L&&(g=this.color(L,g)),a&&(g=a.split(",").map(l=>y[l]).filter((l,b,tr)=>tr.indexOf(l)===b).reduce((l,b)=>b(l),g)),r=r.replace(t,g)}return r}[Symbol.for("nodejs.util.inspect.custom")](){return`Logger <Color ${this.colorEnabled?"enabled":"disabled"}>`}};export{T as Logger,h as argumentRegex,or as colorMap,pr as default,y as modifiersMap}; if (module.exports.default) { Object.assign(module.exports.default, module.exports); module.exports = module.exports.default; delete module.exports.default; } //# sourceMappingURL=index.mjs.map