UNPKG

@lsk4/log

Version:

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

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