@lsk4/log
Version:
Yet another logger whitch combines the best features of debug, bunyan, logfmt/logrus, morgan/winston
21 lines (16 loc) • 8.65 kB
JavaScript
;
var algos = require('@lsk4/algos');
var env = require('@lsk4/env');
var err = require('@lsk4/err');
var ut = require('fast-safe-stringify');
var colors = require('@lsk4/colors');
var Lt = require('pretty-bytes');
var bt = require('pretty-time');
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
var ut__default = /*#__PURE__*/_interopDefault(ut);
var Lt__default = /*#__PURE__*/_interopDefault(Lt);
var bt__default = /*#__PURE__*/_interopDefault(bt);
var st=Object.defineProperty;var o=(t,e)=>st(t,"name",{value:e,configurable:!0});function A(t=""){let e=[],r=[],n,i=(typeof t=="string"?t:"").split(/[\s,]+/);for(n=0;n<i.length;n++){if(!i[n])continue;let s=i[n].replace(/\*/g,".*?");s[0]==="-"?r.push(new RegExp(`^${s.slice(1)}$`)):e.push(new RegExp(`^${s}$`));}return {on:e,off:r}}o(A,"parseNs");var k=env.isDev||env.isClient?"pretty":"lsk",ct=typeof process<"u"?process:null,ft=o(t=>!!+t,"isYes"),y=o(()=>{let t=env.getEnvVar("DEBUG","")||"",e=ft(env.getEnvVar("LSK_SILENT"))||ct?.argv?.includes("--silent"),r=t.startsWith("lsk")||t.startsWith("*"),n=env.getEnvVar("LOG_FORMAT",env.getEnvVar("DEBUG_FORMAT",k)),{on:i,off:s}=A(t),f=env.getEnvVar("LOG_LEVEL",env.getEnvVar("DEBUG_LEVEL",e?"error":r?"trace":"debug"));return algos.omitNull({format:n,level:f,on:i,off:s})},"getEnvConfig");var S={start:99,log:99,fatal:60,error:50,warn:40,success:35,info:30,debug:20,trace:10},I={fatal:["bgRed"],error:["bold","bgRed"],warn:["bgYellow"],debug:["bold","cyan"],info:["bold","green"],trace:["gray"],log:["bgWhite"]},W={fatal:["bold","red"],error:["red"],warn:["yellow"],debug:["cyan"],info:["green"],trace:["gray"],log:["bgWhite"]},E=[["red"],["green"],["yellow"],["blue"],["magenta"],["cyan"],["bold","red"],["bold","green"],["bold","yellow"],["bold","blue"],["bold","magenta"],["bold","cyan"]],_=[["bold","white"],["bold","cyan"],["bold","green"],["white"]];var m;(function(t){t.bunyan="bunyan",t.lsklog="lsklog",t.lsklogweb="lsklogweb",t.logrus="logrus",t.raw="raw";})(m||(m={}));var z=ut__default.default.default;var u=o((t,e=null,r=0)=>typeof t=="object"?z(t,e,r):String(t),"toString");var N=o(t=>t.map(e=>err.isError(e)?err.getCode(e):null).filter(Boolean)[0],"getErrCode"),P=o(t=>t.length?t.map(e=>err.isError(e)?err.getMessage(e):u(e)).join(" "):null,"createMsg");var mt={log:10,trace:10,debug:20,info:30,warn:40,error:50,fatal:60};var U=o(t=>{let{level:e,time:r,...n}=t;return u({level:mt[e],time:r.toISOString(),...n})},"stringifyBunyan");var ht={log:"trace",trace:"trace",debug:"debug",info:"info",warn:"warning",error:"error",fatal:"fatal"};var $=o(t=>{let{level:e,time:r,...n}=t;return u({level:ht[e],time:r.toISOString(),...n})},"stringifyLogrus");var h=o(t=>!!(t&&(t.name==="req"||t.method&&t.host&&t.url)),"isLsklogWeb"),B=o(t=>!!(h(t)&&(t.status||t.duration||t.length)),"isLsklogWebFinal");var G=o(t=>{let{level:e,time:r,...n}=t;return u({level:e,time:+r,...n})},"stringifyLsklog");function D(t,e,...r){let n=N(r),i=P(r),s={code:n,...e,msg:i};return t==="bunyan"?U(s):t==="logrus"?$(s):G(s)}o(D,"stringify");function V(){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(V,"isUnicodeSupported");var L=V();var b=L?"\u2139":"\xD7",J=L?"\u26A0":"\xD7",Y=L?"\u2718":"\xD7";var H=L?"\u2573":"\xD7";var Q=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"),X=Q;function Z(t,e){let r=E[X(e||"")%E.length]||[];return colors.colorize(t,r)}o(Z,"themeizeRandom");function K(t,e){let r=e?I[e]:[];return colors.colorize(t,r)}o(K,"themeize");function d(t,e){let r=e?W[e]:[];return colors.colorize(t,r)}o(d,"themeizeLight");var j=env.getEnvVar("LOG_VIEW","emoji"),x=o((t,e)=>String(t).padStart(e),"leftPad"),vt=o((t,e)=>String(t).padEnd(e),"rightPad"),R=20,wt=o((t,e=0)=>(R=Math.max(t&&t.length||0,R,e),vt(t,R)),"prettyPath"),q=o(t=>t>=500?"error":t>=400?"warn":t>=300?"debug":null,"getStatusLevel"),kt=o(t=>{let e=q(t);return e||(e=t!==200?"log":null),d(x(String(t),3),e)},"prettyStatus"),St=o(t=>x(`#${t}`,3),"prettyReqId"),Et=o(t=>{let e=t==="REMOVE"?"error":t==="WS"?"debug":null;return d(x(t,4),e)},"prettyMethod"),_t=o((t,e="")=>{if(!Number.isFinite(t))return null;let r=t>=10*1e3?"error":t>=3*1e3?"warn":null,i=["m","s","ms"].includes(e)?e:"",s=Math.floor(Math.abs(t)*10**6),a=bt__default.default(s,i);return d(x(a,5),r)},"prettyTime"),Bt=o((t,e="")=>{if(!Number.isFinite(t))return null;let r=Lt__default.default(t,{maximumFractionDigits:1}).split(" "),n=r[1].toLowerCase(),i=+r[0]>=100?Math.round(+r[0]):+r[0],s=t>1*1e3*1e3?"error":t>5*1e3?"warn":null,a=s?d(n,s):n;return `${i}${e}${a}`},"prettySize"),tt=o((t,e)=>[...t,e].filter(Boolean).map(String).map(n=>Z(n,n)).join(":"),"prettyNs");var M=o((t,e=!0)=>{let r;return j==="emoji"?(r={fatal:H,error:Y,warn:J,info:b,debug:b,trace:b}[t]||" ",(e?" ":"")+d(r,t)):(j==="short"?(r=(t[0]||"").toLowerCase(),r=`[${r}]`):(r=x(t,5),r=`[${r}]`),K(r,t))},"prettyLevel"),Ct=/\[[^"\]]+]/gm,et=o((...t)=>{let e=[];return t.forEach(r=>{if(typeof r=="string"){let n=0;e.push(r.replace(Ct,i=>colors.colorize(i,_[n++%_.length])));}else e.push(r);}),e},"prettyContent"),Rt=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"),Mt=o(t=>{let e=q(t.status);return e||(B(t)?"debug":"trace")},"getUrlLevel"),rt=o(t=>{let e=B(t),r=Mt(t);return [M(r),Et(t.method),wt(t.url),St(t.reqId),e&&t.method!=="WS"?kt(t.status):null,!e&&"\u29D7\u29D6\u29D7",e&&_t(t.duration),e&&t.method!=="WS"?Bt(t.length):null,e&&t.err?Rt(t.err):null].filter(Boolean).join(" ")},"prettyUrl");function Tt(t,e){let r=0;return t.forEach((n,i)=>{i===r&&e(n)&&(r+=1);}),r}o(Tt,"countInRow");function At(...t){let e=Tt(t,r=>typeof r=="string");return [t.slice(0,e).join(" "),...t.slice(e)]}o(At,"concatFirstStrings");function ot(t,...e){let r=t?.ns,n=t?.name,i=t?.level||"log",s=e;if(h(t))return [rt(t)];let a=(r||"").split(":").filter(Boolean).map(String),f=[M(i)];return (a.length||n)&&f.push(tt(a,n)),At(...f,...et(...s))}o(ot,"prettyFormat");function T(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(T,"anyRegExps");var v=class{static{o(this,"Logger");}prefix;ns;name;format=k;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:i,format:s,on:a=[],off:f=[]}){if(e&&(this.prefix=e),r&&(this.ns=r),a&&(this.on=a),f&&(this.off=f),n&&(this.name=n),s&&(this.format=s),i){if(!S[i])throw new Error(`Incorrect level: ${this.level}`);this.level=i;}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 S[e]||0}canLog(e){let r=this.getLevelPriority(e),n=this.getLevelPriority(this.level);return this.ns&&T(this.off,this.ns)?!1:this.ns&&T(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,...i]=r,s={name:this.name,ns:this.ns,level:e,time:new Date},a=r;if(h(n)&&(s={...s,...n},a=i),this.format==="none")return;let f=algos.omitNull(s);if(this.format==="pretty"){this.log(...ot(f,...a));return}this.log(D(this.format||"lsk",f,...a));}};var nt=o((t={},e={})=>{let r=y(),n={...typeof t=="string"?{name:t}:t,...r,...e},i=[n.ns,n.name].filter(Boolean).join(":");return n.on?.some(s=>s.test(i))&&(n.level="trace"),n.off?.some(s=>s.test(i))&&(n.level="error"),new v(n)},"createLogger");var w={},p=o(function(t=""){return w[t]||(w[t]=nt(t)),w[t]},"lazyLog");p.loggers=w;var c=p();p.trace=c.trace.bind(c);p.debug=c.debug.bind(c);p.info=c.info.bind(c);p.warn=c.warn.bind(c);p.error=c.error.bind(c);p.fatal=c.fatal.bind(c);
exports.lazyLog = p;
//# sourceMappingURL=out.js.map
//# sourceMappingURL=lazyLog.js.map