UNPKG

@lsk4/log

Version:

Yet another logger whitch combines the best features of debug, bunyan, logfmt/logrus, morgan/winston

13 lines (11 loc) 7.84 kB
import { omitNull } from '@lsk4/algos'; import { getEnvVar, isDev, isClient } from '@lsk4/env'; import { isError, getCode, getMessage, Err } from '@lsk4/err'; import at from 'fast-safe-stringify'; import { colorize } from '@lsk4/colors'; import dt from 'pretty-bytes'; import xt from 'pretty-time'; var rt=Object.defineProperty;var o=(t,e)=>rt(t,"name",{value:e,configurable:!0});var L={start:99,log:99,fatal:60,error:50,warn:40,success:35,info:30,debug:20,trace:10},R={fatal:["bgRed"],error:["bold","bgRed"],warn:["bgYellow"],debug:["bold","cyan"],info:["bold","green"],trace:["gray"],log:["bgWhite"]},M={fatal:["bold","red"],error:["red"],warn:["yellow"],debug:["cyan"],info:["green"],trace:["gray"],log:["bgWhite"]},b=[["red"],["green"],["yellow"],["blue"],["magenta"],["cyan"],["bold","red"],["bold","green"],["bold","yellow"],["bold","blue"],["bold","magenta"],["bold","cyan"]],v=[["bold","white"],["bold","cyan"],["bold","green"],["white"]];function T(t=""){let e=[],r=[],n,s=(typeof t=="string"?t:"").split(/[\s,]+/);for(n=0;n<s.length;n++){if(!s[n])continue;let i=s[n].replace(/\*/g,".*?");i[0]==="-"?r.push(new RegExp(`^${i.slice(1)}$`)):e.push(new RegExp(`^${i}$`));}return {on:e,off:r}}o(T,"parseNs");var w=isDev||isClient?"pretty":"lsk",it=typeof process<"u"?process:null,lt=o(t=>!!+t,"isYes"),A=o(()=>{let t=getEnvVar("DEBUG","")||"",e=lt(getEnvVar("LSK_SILENT"))||it?.argv?.includes("--silent"),r=t.startsWith("lsk")||t.startsWith("*"),n=getEnvVar("LOG_FORMAT",getEnvVar("DEBUG_FORMAT",w)),{on:s,off:i}=T(t),f=getEnvVar("LOG_LEVEL",getEnvVar("DEBUG_LEVEL",e?"error":r?"trace":"debug"));return omitNull({format:n,level:f,on:s,off:i})},"getEnvConfig");var g;(function(t){t.bunyan="bunyan",t.lsklog="lsklog",t.lsklogweb="lsklogweb",t.logrus="logrus",t.raw="raw";})(g||(g={}));var I=at.default;var u=o((t,e=null,r=0)=>typeof t=="object"?I(t,e,r):String(t),"toString");var W=o(t=>t.map(e=>isError(e)?getCode(e):null).filter(Boolean)[0],"getErrCode"),O=o(t=>t.length?t.map(e=>isError(e)?getMessage(e):u(e)).join(" "):null,"createMsg");var ut={log:10,trace:10,debug:20,info:30,warn:40,error:50,fatal:60};var P=o(t=>{let{level:e,time:r,...n}=t;return u({level:ut[e],time:r.toISOString(),...n})},"stringifyBunyan");var pt={log:"trace",trace:"trace",debug:"debug",info:"info",warn:"warning",error:"error",fatal:"fatal"};var z=o(t=>{let{level:e,time:r,...n}=t;return u({level:pt[e],time:r.toISOString(),...n})},"stringifyLogrus");var m=o(t=>!!(t&&(t.name==="req"||t.method&&t.host&&t.url)),"isLsklogWeb"),k=o(t=>!!(m(t)&&(t.status||t.duration||t.length)),"isLsklogWebFinal");var U=o(t=>{let{level:e,time:r,...n}=t;return u({level:e,time:+r,...n})},"stringifyLsklog");function $(t,e,...r){let n=W(r),s=O(r),i={code:n,...e,msg:s};return t==="bunyan"?P(i):t==="logrus"?z(i):U(i)}o($,"stringify");function G(){let t=typeof process<"u"?process:{};return t?.platform!=="win32"?t?.env?.TERM!=="linux":!!t?.env?.WT_SESSION||!!t?.env?.TERMINUS_SUBLIME||t?.env?.ConEmuTask==="{cmd::Cmder}"||t?.env?.TERM_PROGRAM==="Terminus-Sublime"||t?.env?.TERM_PROGRAM==="vscode"||t?.env?.TERM==="xterm-256color"||t?.env?.TERM==="alacritty"||t?.env?.TERMINAL_EMULATOR==="JetBrains-JediTerm"}o(G,"isUnicodeSupported");var x=G();var y=x?"\u2139":"\xD7",D=x?"\u26A0":"\xD7",V=x?"\u2718":"\xD7";var J=x?"\u2573":"\xD7";var Y=o(t=>typeof t=="number"?t:Math.abs(String(t).split("").reduce((e,r)=>{let n=(e<<5)-e+r.charCodeAt(0);return n&n},0)-48),"hashCode"),H=Y;function Q(t,e){let r=b[H(e||"")%b.length]||[];return colorize(t,r)}o(Q,"themeizeRandom");function X(t,e){let r=e?R[e]:[];return colorize(t,r)}o(X,"themeize");function h(t,e){let r=e?M[e]:[];return colorize(t,r)}o(h,"themeizeLight");var Z=getEnvVar("LOG_VIEW","emoji"),d=o((t,e)=>String(t).padStart(e),"leftPad"),yt=o((t,e)=>String(t).padEnd(e),"rightPad"),E=20,Lt=o((t,e=0)=>(E=Math.max(t&&t.length||0,E,e),yt(t,E)),"prettyPath"),K=o(t=>t>=500?"error":t>=400?"warn":t>=300?"debug":null,"getStatusLevel"),bt=o(t=>{let e=K(t);return e||(e=t!==200?"log":null),h(d(String(t),3),e)},"prettyStatus"),vt=o(t=>d(`#${t}`,3),"prettyReqId"),wt=o(t=>{let e=t==="REMOVE"?"error":t==="WS"?"debug":null;return h(d(t,4),e)},"prettyMethod"),kt=o((t,e="")=>{if(!Number.isFinite(t))return null;let r=t>=10*1e3?"error":t>=3*1e3?"warn":null,s=["m","s","ms"].includes(e)?e:"",i=Math.floor(Math.abs(t)*10**6),c=xt(i,s);return h(d(c,5),r)},"prettyTime"),St=o((t,e="")=>{if(!Number.isFinite(t))return null;let r=dt(t,{maximumFractionDigits:1}).split(" "),n=r[1].toLowerCase(),s=+r[0]>=100?Math.round(+r[0]):+r[0],i=t>1*1e3*1e3?"error":t>5*1e3?"warn":null,c=i?h(n,i):n;return `${s}${e}${c}`},"prettySize"),j=o((t,e)=>[...t,e].filter(Boolean).map(String).map(n=>Q(n,n)).join(":"),"prettyNs");var _=o((t,e=!0)=>{let r;return Z==="emoji"?(r={fatal:J,error:V,warn:D,info:y,debug:y,trace:y}[t]||" ",(e?" ":"")+h(r,t)):(Z==="short"?(r=(t[0]||"").toLowerCase(),r=`[${r}]`):(r=d(t,5),r=`[${r}]`),X(r,t))},"prettyLevel"),Et=/\[[^"\]]+]/gm,q=o((...t)=>{let e=[];return t.forEach(r=>{if(typeof r=="string"){let n=0;e.push(r.replace(Et,s=>colorize(s,v[n++%v.length])));}else e.push(r);}),e},"prettyContent"),_t=o(t=>{if(!t)return null;let e=typeof t=="string"?t:Err.getCode(t);return e==="err_unknown"?null:e.substr(0,20)},"prettyErr"),Bt=o(t=>{let e=K(t.status);return e||(k(t)?"debug":"trace")},"getUrlLevel"),tt=o(t=>{let e=k(t),r=Bt(t);return [_(r),wt(t.method),Lt(t.url),vt(t.reqId),e&&t.method!=="WS"?bt(t.status):null,!e&&"\u29D7\u29D6\u29D7",e&&kt(t.duration),e&&t.method!=="WS"?St(t.length):null,e&&t.err?_t(t.err):null].filter(Boolean).join(" ")},"prettyUrl");function Ct(t,e){let r=0;return t.forEach((n,s)=>{s===r&&e(n)&&(r+=1);}),r}o(Ct,"countInRow");function Rt(...t){let e=Ct(t,r=>typeof r=="string");return [t.slice(0,e).join(" "),...t.slice(e)]}o(Rt,"concatFirstStrings");function et(t,...e){let r=t?.ns,n=t?.name,s=t?.level||"log",i=e;if(m(t))return [tt(t)];let c=(r||"").split(":").filter(Boolean).map(String),f=[_(s)];return (c.length||n)&&f.push(j(c,n)),Rt(...f,...q(...i))}o(et,"prettyFormat");function B(t,e){Array.isArray(t)||(t=[t]);for(let r=0;r<t.length;r++)if(t[r].test(e))return !0;return !1}o(B,"anyRegExps");var C=class{static{o(this,"Logger");}prefix;ns;name;format=w;level="trace";on=[];off=[];constructor(e={}){typeof e=="string"?this.setProps({name:e,...A()}):this.setProps(e);}setProps({prefix:e,ns:r,name:n,level:s,format:i,on:c=[],off:f=[]}){if(e&&(this.prefix=e),r&&(this.ns=r),c&&(this.on=c),f&&(this.off=f),n&&(this.name=n),i&&(this.format=i),s){if(!L[s])throw new Error(`Incorrect level: ${this.level}`);this.level=s;}this.level||(this.level="trace"),this.level||(this.level="trace"),this.format||(this.format="lsk"),this.off||(this.off=[]),this.on||(this.on=[]);}static create(e){return new this(e)}createChild(...e){let r=[this.ns,this.name].filter(Boolean).join(".");return new this.constructor(this,{colors:null,ns:r},...e)}getLevelPriority(e){return L[e]||0}canLog(e){let r=this.getLevelPriority(e),n=this.getLevelPriority(this.level);return this.ns&&B(this.off,this.ns)?!1:this.ns&&B(this.on,this.ns)?!0:r>=n}fatal(...e){this.canLog("fatal")&&this.__log("fatal",...e);}error(...e){this.canLog("error")&&this.__log("error",...e);}warn(...e){this.canLog("warn")&&this.__log("warn",...e);}debug(...e){this.canLog("debug")&&this.__log("debug",...e);}info(...e){this.canLog("info")&&this.__log("info",...e);}trace(...e){this.canLog("trace")&&this.__log("trace",...e);}log(...e){console._log?console._log(...e):console.log(...e);}__log(e,...r){let[n,...s]=r,i={name:this.name,ns:this.ns,level:e,time:new Date},c=r;if(m(n)&&(i={...i,...n},c=s),this.format==="none")return;let f=omitNull(i);if(this.format==="pretty"){this.log(...et(f,...c));return}this.log($(this.format||"lsk",f,...c));}},Tr=C; export { C as Logger, Tr as default }; //# sourceMappingURL=out.js.map //# sourceMappingURL=Logger.js.map