@lsk4/log
Version:
Yet another logger whitch combines the best features of debug, bunyan, logfmt/logrus, morgan/winston
27 lines (23 loc) • 11 kB
JavaScript
;
var se = require('readline');
var ie = require('split');
var le = require('through');
var algos = require('@lsk4/algos');
var env = require('@lsk4/env');
var err = require('@lsk4/err');
var Mt = require('fast-safe-stringify');
var colors = require('@lsk4/colors');
var Dt = require('pretty-bytes');
var Vt = require('pretty-time');
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
var se__default = /*#__PURE__*/_interopDefault(se);
var ie__default = /*#__PURE__*/_interopDefault(ie);
var le__default = /*#__PURE__*/_interopDefault(le);
var Mt__default = /*#__PURE__*/_interopDefault(Mt);
var Dt__default = /*#__PURE__*/_interopDefault(Dt);
var Vt__default = /*#__PURE__*/_interopDefault(Vt);
var St=Object.defineProperty;var o=(t,e)=>St(t,"name",{value:e,configurable:!0});function F(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(F,"parseNs");var w=env.isDev||env.isClient?"pretty":"lsk",Rt=typeof process<"u"?process:null,Ct=o(t=>!!+t,"isYes"),y=o(()=>{let t=env.getEnvVar("DEBUG","")||"",e=Ct(env.getEnvVar("LSK_SILENT"))||Rt?.argv?.includes("--silent"),r=t.startsWith("lsk")||t.startsWith("*"),n=env.getEnvVar("LOG_FORMAT",env.getEnvVar("DEBUG_FORMAT",w)),{on:s,off:i}=F(t),c=env.getEnvVar("LOG_LEVEL",env.getEnvVar("DEBUG_LEVEL",e?"error":r?"trace":"debug"));return algos.omitNull({format:n,level:c,on:s,off:i})},"getEnvConfig");var k={start:99,log:99,fatal:60,error:50,warn:40,success:35,info:30,debug:20,trace:10},O={fatal:["bgRed"],error:["bold","bgRed"],warn:["bgYellow"],debug:["bold","cyan"],info:["bold","green"],trace:["gray"],log:["bgWhite"]},z={fatal:["bold","red"],error:["red"],warn:["yellow"],debug:["cyan"],info:["green"],trace:["gray"],log:["bgWhite"]},S=[["red"],["green"],["yellow"],["blue"],["magenta"],["cyan"],["bold","red"],["bold","green"],["bold","yellow"],["bold","blue"],["bold","magenta"],["bold","cyan"]],E=[["bold","white"],["bold","cyan"],["bold","green"],["white"]];var f;(function(t){t.bunyan="bunyan",t.lsklog="lsklog",t.lsklogweb="lsklogweb",t.logrus="logrus",t.raw="raw";})(f||(f={}));var U=Mt__default.default.default;var p=o((t,e=null,r=0)=>typeof t=="object"?U(t,e,r):String(t),"toString");var G=o(t=>t.map(e=>err.isError(e)?err.getCode(e):null).filter(Boolean)[0],"getErrCode"),D=o(t=>t.length?t.map(e=>err.isError(e)?err.getMessage(e):p(e)).join(" "):null,"createMsg");var m=o((t,e)=>{let r=[];return t!==null&&r.push(env.tryJSONparse(t)),Object.keys(e).length&&r.push(e),r},"parseArgs");var Nt={10:"trace",20:"debug",30:"info",40:"warn",50:"error",60:"fatal"},Pt={log:10,trace:10,debug:20,info:30,warn:40,error:50,fatal:60},V=o(t=>!!(t.name&&t.hostname&&t.pid&&t.msg&&t.time),"isBunyan"),J=o(t=>{let{level:e,time:r,msg:n,hostname:s,pid:i,v:a,...c}=t;return {format:f.bunyan,meta:{level:Nt[e],time:new Date(r)},args:m(n,c)}},"parseBunyan"),Y=o(t=>{let{level:e,time:r,...n}=t;return p({level:Pt[e],time:r.toISOString(),...n})},"stringifyBunyan");var Wt=["trace","debug","info","warning","error","fatal","panic"],Ft={trace:"trace",debug:"debug",info:"info",warning:"warn",error:"error",fatal:"fatal",panic:"fatal"},Ot={log:"trace",trace:"trace",debug:"debug",info:"info",warn:"warning",error:"error",fatal:"fatal"},_=o(t=>!!(t.msg&&Wt.includes(t.level)),"isLogrus"),H=o(t=>{let{level:e,time:r,msg:n,...s}=t;return {format:f.logrus,meta:{level:Ft[e],time:new Date(r)},args:m(n,s)}},"parseLogrus"),K=o(t=>{let{level:e,time:r,...n}=t;return p({level:Ot[e],time:r.toISOString(),...n})},"stringifyLogrus");var Q=["trace","debug","info","warn","error","fatal"];var X=o(t=>!!(Q.includes(t.level)&&t.ns),"isLsklog"),B=o(t=>!!Q.includes(t.level),"isLskLikelog"),u=o(t=>!!(t&&(t.name==="req"||t.method&&t.host&&t.url)),"isLsklogWeb"),R=o(t=>!!(u(t)&&(t.status||t.duration||t.length)),"isLsklogWebFinal"),C=o(t=>{let{level:e,time:r,msg:n,ns:s,name:i,...a}=t,c={level:e,time:r,msg:n,ns:s,name:i};if(!u(t))return {format:f.lsklogweb,meta:c,args:m(n,a)};let{reqId:W,method:ht,host:dt,ua:xt,ip:yt,url:Lt,status:vt,length:bt,duration:wt,...kt}=a;return {format:f.lsklog,meta:{...c,method:ht,host:dt,reqId:W,ua:xt,ip:yt,url:Lt,status:vt,duration:wt,length:bt},args:m(n,kt)}},"parseLsklog"),Z=o(t=>{let{level:e,time:r,...n}=t;return p({level:e,time:+r,...n})},"stringifyLsklog");function zt(t){return V(t)?f.bunyan:X(t)?f.lsklog:u(t)?f.lsklogweb:_(t)&&B(t)&&t?.name?f.lsklog:_(t)?f.logrus:B(t)?f.lsklog:null}o(zt,"detectFormat");function j(t,e,...r){let n=G(r),s=D(r),i={code:n,...e,msg:s};return t==="bunyan"?Y(i):t==="logrus"?K(i):Z(i)}o(j,"stringify");function q(t){let e=zt(t);return e==="bunyan"?J(t):e==="lsklogweb"?C(t):e==="lsklog"?C(t):e==="logrus"?H(t):{format:e,meta:{},args:[t]}}o(q,"parse");function tt(){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(tt,"isUnicodeSupported");var L=tt();var v=L?"\u2139":"\xD7",et=L?"\u26A0":"\xD7",rt=L?"\u2718":"\xD7";var ot=L?"\u2573":"\xD7";var nt=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"),st=nt;function it(t,e){let r=S[st(e||"")%S.length]||[];return colors.colorize(t,r)}o(it,"themeizeRandom");function lt(t,e){let r=e?O[e]:[];return colors.colorize(t,r)}o(lt,"themeize");function h(t,e){let r=e?z[e]:[];return colors.colorize(t,r)}o(h,"themeizeLight");var at=env.getEnvVar("LOG_VIEW","emoji"),x=o((t,e)=>String(t).padStart(e),"leftPad"),Jt=o((t,e)=>String(t).padEnd(e),"rightPad"),T=20,Yt=o((t,e=0)=>(T=Math.max(t&&t.length||0,T,e),Jt(t,T)),"prettyPath"),ft=o(t=>t>=500?"error":t>=400?"warn":t>=300?"debug":null,"getStatusLevel"),Ht=o(t=>{let e=ft(t);return e||(e=t!==200?"log":null),h(x(String(t),3),e)},"prettyStatus"),Kt=o(t=>x(`#${t}`,3),"prettyReqId"),Qt=o(t=>{let e=t==="REMOVE"?"error":t==="WS"?"debug":null;return h(x(t,4),e)},"prettyMethod"),Xt=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),a=Vt__default.default(i,s);return h(x(a,5),r)},"prettyTime"),Zt=o((t,e="")=>{if(!Number.isFinite(t))return null;let r=Dt__default.default(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,a=i?h(n,i):n;return `${s}${e}${a}`},"prettySize"),ct=o((t,e)=>[...t,e].filter(Boolean).map(String).map(n=>it(n,n)).join(":"),"prettyNs");var I=o((t,e=!0)=>{let r;return at==="emoji"?(r={fatal:ot,error:rt,warn:et,info:v,debug:v,trace:v}[t]||" ",(e?" ":"")+h(r,t)):(at==="short"?(r=(t[0]||"").toLowerCase(),r=`[${r}]`):(r=x(t,5),r=`[${r}]`),lt(r,t))},"prettyLevel"),jt=/\[[^"\]]+]/gm,pt=o((...t)=>{let e=[];return t.forEach(r=>{if(typeof r=="string"){let n=0;e.push(r.replace(jt,s=>colors.colorize(s,E[n++%E.length])));}else e.push(r);}),e},"prettyContent"),qt=o(t=>{if(!t)return null;let e=typeof t=="string"?t:err.Err.getCode(t);return e==="err_unknown"?null:e.substr(0,20)},"prettyErr"),te=o(t=>{let e=ft(t.status);return e||(R(t)?"debug":"trace")},"getUrlLevel"),ut=o(t=>{let e=R(t),r=te(t);return [I(r),Qt(t.method),Yt(t.url),Kt(t.reqId),e&&t.method!=="WS"?Ht(t.status):null,!e&&"\u29D7\u29D6\u29D7",e&&Xt(t.duration),e&&t.method!=="WS"?Zt(t.length):null,e&&t.err?qt(t.err):null].filter(Boolean).join(" ")},"prettyUrl");function ee(t,e){let r=0;return t.forEach((n,s)=>{s===r&&e(n)&&(r+=1);}),r}o(ee,"countInRow");function re(...t){let e=ee(t,r=>typeof r=="string");return [t.slice(0,e).join(" "),...t.slice(e)]}o(re,"concatFirstStrings");function d(t,...e){let r=t?.ns,n=t?.name,s=t?.level||"log",i=e;if(u(t))return [ut(t)];let a=(r||"").split(":").filter(Boolean).map(String),c=[I(s)];return (a.length||n)&&c.push(ct(a,n)),re(...c,...pt(...i))}o(d,"prettyFormat");function A(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(A,"anyRegExps");var b=class{static{o(this,"Logger");}prefix;ns;name;format=w;level="trace";on=[];off=[];constructor(e={}){typeof e=="string"?this.setProps({name:e,...y()}):this.setProps(e);}setProps({prefix:e,ns:r,name:n,level:s,format:i,on:a=[],off:c=[]}){if(e&&(this.prefix=e),r&&(this.ns=r),a&&(this.on=a),c&&(this.off=c),n&&(this.name=n),i&&(this.format=i),s){if(!k[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 k[e]||0}canLog(e){let r=this.getLevelPriority(e),n=this.getLevelPriority(this.level);return this.ns&&A(this.off,this.ns)?!1:this.ns&&A(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},a=r;if(u(n)&&(i={...i,...n},a=s),this.format==="none")return;let c=algos.omitNull(i);if(this.format==="pretty"){this.log(...d(c,...a));return}this.log(j(this.format||"lsk",c,...a));}};var mt=o((t={},e={})=>{let r=y(),n={...typeof t=="string"?{name:t}:t,...r,...e},s=[n.ns,n.name].filter(Boolean).join(":");return n.on?.some(i=>i.test(s))&&(n.level="trace"),n.off?.some(i=>i.test(s))&&(n.level="error"),new b(n)},"createLogger");var N=mt();var gt=o((t,e=t)=>{try{if(typeof t!="string")return t;if(!t.trim())return e;throw "!logfmt"}catch{return e}},"tryLogfmtParse");var P=o((t,e)=>{let r;if(typeof e=="string"&&(!r&&e.trim()&&(r=env.tryJSONparse(e,null),r!==null&&("json")),!r&&e.trim()&&(r=gt(e,null),r!==null&&("logfmt"))),r===null&&(r=null,"raw"),!r){t.log(...d({},e));return}if(typeof r!="object"){t.log(...d({},r));return}let{meta:s,args:i=[]}=q(r);t.log(...d(s,...i));},"prettyRawLog");process.env.LSK_LOG_READLINE!=="0"?se__default.default.createInterface({input:process.stdin}).on("line",t=>{P(N,t);}):process.stdin.pipe(ie__default.default()).pipe(le__default.default(function(t){if(!t){this.emit("data",`${t}
`);return}P(N,t);})).pipe(process.stdout);
//# sourceMappingURL=out.js.map
//# sourceMappingURL=cli.js.map