@lsk4/log
Version:
Yet another logger whitch combines the best features of debug, bunyan, logfmt/logrus, morgan/winston
12 lines (10 loc) • 6.92 kB
JavaScript
import at from 'fast-safe-stringify';
import { getEnvVar, tryJSONparse } from '@lsk4/env';
import { colorize } from '@lsk4/colors';
import { Err } from '@lsk4/err';
import gt from 'pretty-bytes';
import dt from 'pretty-time';
var it=Object.defineProperty;var o=(t,r)=>it(t,"name",{value:r,configurable:!0});var a;(function(t){t.bunyan="bunyan",t.lsklog="lsklog",t.lsklogweb="lsklogweb",t.logrus="logrus",t.raw="raw";})(a||(a={}));at.default;var m=o((t,r)=>{let e=[];return t!==null&&e.push(tryJSONparse(t)),Object.keys(r).length&&e.push(r),e},"parseArgs");var I=["trace","debug","info","warn","error","fatal"];var W=o(t=>!!(I.includes(t.level)&&t.ns),"isLsklog"),L=o(t=>!!I.includes(t.level),"isLskLikelog"),f=o(t=>!!(t&&(t.name==="req"||t.method&&t.host&&t.url)),"isLsklogWeb"),v=o(t=>!!(f(t)&&(t.status||t.duration||t.length)),"isLsklogWebFinal"),k=o(t=>{let{level:r,time:e,msg:n,ns:i,name:p,...c}=t,u={level:r,time:e,msg:n,ns:i,name:p};if(!f(t))return {format:a.lsklogweb,meta:u,args:m(n,c)};let{reqId:K,method:j,host:q,ua:tt,ip:rt,url:et,status:ot,length:nt,duration:st,...lt}=c;return {format:a.lsklog,meta:{...u,method:j,host:q,reqId:K,ua:tt,ip:rt,url:et,status:ot,duration:st,length:nt},args:m(n,lt)}},"parseLsklog");var z={fatal:["bgRed"],error:["bold","bgRed"],warn:["bgYellow"],debug:["bold","cyan"],info:["bold","green"],trace:["gray"],log:["bgWhite"]},N={fatal:["bold","red"],error:["red"],warn:["yellow"],debug:["cyan"],info:["green"],trace:["gray"],log:["bgWhite"]},w=[["red"],["green"],["yellow"],["blue"],["magenta"],["cyan"],["bold","red"],["bold","green"],["bold","yellow"],["bold","blue"],["bold","magenta"],["bold","cyan"]],S=[["bold","white"],["bold","cyan"],["bold","green"],["white"]];function O(){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(O,"isUnicodeSupported");var x=O();var h=x?"\u2139":"\xD7",F=x?"\u26A0":"\xD7",A=x?"\u2718":"\xD7";var _=x?"\u2573":"\xD7";var E=o(t=>typeof t=="number"?t:Math.abs(String(t).split("").reduce((r,e)=>{let n=(r<<5)-r+e.charCodeAt(0);return n&n},0)-48),"hashCode"),P=E;function M(t,r){let e=w[P(r||"")%w.length]||[];return colorize(t,e)}o(M,"themeizeRandom");function U(t,r){let e=r?z[r]:[];return colorize(t,e)}o(U,"themeize");function g(t,r){let e=r?N[r]:[];return colorize(t,e)}o(g,"themeizeLight");var $=getEnvVar("LOG_VIEW","emoji"),d=o((t,r)=>String(t).padStart(r),"leftPad"),xt=o((t,r)=>String(t).padEnd(r),"rightPad"),C=20,ht=o((t,r=0)=>(C=Math.max(t&&t.length||0,C,r),xt(t,C)),"prettyPath"),G=o(t=>t>=500?"error":t>=400?"warn":t>=300?"debug":null,"getStatusLevel"),yt=o(t=>{let r=G(t);return r||(r=t!==200?"log":null),g(d(String(t),3),r)},"prettyStatus"),bt=o(t=>d(`#${t}`,3),"prettyReqId"),Lt=o(t=>{let r=t==="REMOVE"?"error":t==="WS"?"debug":null;return g(d(t,4),r)},"prettyMethod"),vt=o((t,r="")=>{if(!Number.isFinite(t))return null;let e=t>=10*1e3?"error":t>=3*1e3?"warn":null,i=["m","s","ms"].includes(r)?r:"",p=Math.floor(Math.abs(t)*10**6),c=dt(p,i);return g(d(c,5),e)},"prettyTime"),kt=o((t,r="")=>{if(!Number.isFinite(t))return null;let e=gt(t,{maximumFractionDigits:1}).split(" "),n=e[1].toLowerCase(),i=+e[0]>=100?Math.round(+e[0]):+e[0],p=t>1*1e3*1e3?"error":t>5*1e3?"warn":null,c=p?g(n,p):n;return `${i}${r}${c}`},"prettySize"),J=o((t,r)=>[...t,r].filter(Boolean).map(String).map(n=>M(n,n)).join(":"),"prettyNs");function Br(t){let r=["\u25CB","\u2022","\u2660","\u2660","\u2666","\u2665","\u263C","\u2642","\u2640","\u266A","\xA7"],e=r[E(t)%r.length];return M(e,String(t))}o(Br,"prettyMarker");var R=o((t,r=!0)=>{let e;return $==="emoji"?(e={fatal:_,error:A,warn:F,info:h,debug:h,trace:h}[t]||" ",(r?" ":"")+g(e,t)):($==="short"?(e=(t[0]||"").toLowerCase(),e=`[${e}]`):(e=d(t,5),e=`[${e}]`),U(e,t))},"prettyLevel"),wt=/\[[^"\]]+]/gm,D=o((...t)=>{let r=[];return t.forEach(e=>{if(typeof e=="string"){let n=0;r.push(e.replace(wt,i=>colorize(i,S[n++%S.length])));}else r.push(e);}),r},"prettyContent"),St=o(t=>{if(!t)return null;let r=typeof t=="string"?t:Err.getCode(t);return r==="err_unknown"?null:r.substr(0,20)},"prettyErr"),Et=o(t=>{let r=G(t.status);return r||(v(t)?"debug":"trace")},"getUrlLevel"),V=o(t=>{let r=v(t),e=Et(t);return [R(e),Lt(t.method),ht(t.url),bt(t.reqId),r&&t.method!=="WS"?yt(t.status):null,!r&&"\u29D7\u29D6\u29D7",r&&vt(t.duration),r&&t.method!=="WS"?kt(t.length):null,r&&t.err?St(t.err):null].filter(Boolean).join(" ")},"prettyUrl");function Bt(t,r){let e=0;return t.forEach((n,i)=>{i===e&&r(n)&&(e+=1);}),e}o(Bt,"countInRow");function Mt(...t){let r=Bt(t,e=>typeof e=="string");return [t.slice(0,r).join(" "),...t.slice(r)]}o(Mt,"concatFirstStrings");function y(t,...r){let e=t?.ns,n=t?.name,i=t?.level||"log",p=r;if(f(t))return [V(t)];let c=(e||"").split(":").filter(Boolean).map(String),u=[R(i)];return (c.length||n)&&u.push(J(c,n)),Mt(...u,...D(...p))}o(y,"prettyFormat");var Y=o((t,r=t)=>{try{if(typeof t!="string")return t;if(!t.trim())return r;throw "!logfmt"}catch{return r}},"tryLogfmtParse");var Ct={10:"trace",20:"debug",30:"info",40:"warn",50:"error",60:"fatal"};var H=o(t=>!!(t.name&&t.hostname&&t.pid&&t.msg&&t.time),"isBunyan"),Q=o(t=>{let{level:r,time:e,msg:n,hostname:i,pid:p,v:c,...u}=t;return {format:a.bunyan,meta:{level:Ct[r],time:new Date(e)},args:m(n,u)}},"parseBunyan");var Rt=["trace","debug","info","warning","error","fatal","panic"],Tt={trace:"trace",debug:"debug",info:"info",warning:"warn",error:"error",fatal:"fatal",panic:"fatal"};var T=o(t=>!!(t.msg&&Rt.includes(t.level)),"isLogrus"),X=o(t=>{let{level:r,time:e,msg:n,...i}=t;return {format:a.logrus,meta:{level:Tt[r],time:new Date(e)},args:m(n,i)}},"parseLogrus");function It(t){return H(t)?a.bunyan:W(t)?a.lsklog:f(t)?a.lsklogweb:T(t)&&L(t)&&t?.name?a.lsklog:T(t)?a.logrus:L(t)?a.lsklog:null}o(It,"detectFormat");function Z(t){let r=It(t);return r==="bunyan"?Q(t):r==="lsklogweb"?k(t):r==="lsklog"?k(t):r==="logrus"?X(t):{format:r,meta:{},args:[t]}}o(Z,"parse");var ve=o((t,r)=>{let e;if(typeof r=="string"&&(!e&&r.trim()&&(e=tryJSONparse(r,null),e!==null&&("json")),!e&&r.trim()&&(e=Y(r,null),e!==null&&("logfmt"))),e===null&&(e=null,"raw"),!e){t.log(...y({},r));return}if(typeof e!="object"){t.log(...y({},e));return}let{meta:i,args:p=[]}=Z(e);t.log(...y(i,...p));},"prettyRawLog");
export { Mt as concatFirstStrings, Bt as countInRow, G as getStatusLevel, Et as getUrlLevel, D as prettyContent, St as prettyErr, y as prettyFormat, R as prettyLevel, Br as prettyMarker, Lt as prettyMethod, J as prettyNs, ht as prettyPath, ve as prettyRawLog, bt as prettyReqId, kt as prettySize, yt as prettyStatus, vt as prettyTime, V as prettyUrl };
//# sourceMappingURL=out.js.map
//# sourceMappingURL=index.js.map