UNPKG

diesel-core

Version:

Web framework built on Web Standards

4 lines (3 loc) 2.27 kB
var t={reset:"\x1B[0m",info:"\x1B[36m",warn:"\x1B[33m",error:"\x1B[31m",method:{GET:"\x1B[32m",POST:"\x1B[34m",PUT:"\x1B[35m",DELETE:"\x1B[31m",PATCH:"\x1B[36m"}},p=(d,n,o)=>{let i=t[d]||t.reset,g=o?.method?t.method[o.method]||t.reset:t.reset,u=o?.status?o.status>=500?t.error:o.status>=400?t.warn:t.info:t.reset;console.log(` ${i}[${d.toUpperCase()}]${t.reset} ${n} - ${g}${o?.method||""}${t.reset}`);let s={timestamp:new Date().toISOString(),...o,status:o?.status?`${u}${o.status}${t.reset}`:void 0,method:o?.method?`${g>i}${o.method}${t.reset}`:void 0};console.log(JSON.stringify(s,null,2)+` `)},$=(d)=>{let{app:n,logger:o,logLevel:i="info",onRequest:g,onSend:u,onError:s}=d||{};n?.addHooks("onRequest",(e,r)=>{e.startTime=Date.now(),o?.()??p(i,"Incoming Request",{method:e.method,url:r.toString(),headers:{"user-agent":e.headers.get("user-agent"),"content-type":e.headers.get("content-type")}}),g?.(e,r)}),n?.addHooks("onSend",async(e)=>{let r=`${Date.now()-e.req.startTime}ms`;o?.()??p(i,"Response Sent",{method:e.req.method,url:e.url.toString(),status:e.status,duration:r,reqId:e.get?.("requestId"),headers:{"content-type":e.headers.get("content-type")}});let a=await u?.(e);if(a instanceof Response)return a}),n?.addHooks("onError",async(e,r,a)=>{o?.()??p("error","Unhandled Error",{method:r.method,url:a.toString(),status:500,error:e.message});let m=await s?.(e,r,a);if(m instanceof Response)return m})},c=(d,n,o,i=0,g,u)=>{let s=t.method[n]||t.reset,e=i>=500?t.error:i>=400?t.warn:t.info,r=u?`[${u}] `:"",a=d==="<--"?`${d} ${s}${n}${t.reset} ${o} ${r}`:`${d} ${s}${n}${t.reset} ${o} ${e}${i}${t.reset} ${g??""} ${r}`;console.log(a)},l=(d)=>{let n=Date.now()-d;return n<1000?`${n}ms`:`${Math.round(n/1000)}s`},h=(d)=>{let{app:n,log:o,onRequest:i,onSend:g,onError:u}=d;n.addHooks("onRequest",(s,e)=>{s.startTime=Date.now(),o?.()??c("<--",s.method,e.pathname),i?.(s,e)}),n.addHooks("onSend",async(s)=>{let{method:e,url:r}=s.req,a=new URL(r).pathname,m=s.get?.("requestId");o?.()??c("-->",e,a,s.status,l(s.req.startTime),m);let R=await g?.(s);if(R instanceof Response)return R}),n.addHooks("onError",async(s,e,r)=>{o?.()??c(s.message,e.method,r.toString(),500);let a=await u?.(s,e,r);if(a instanceof Response)return a})};export{h as logger,$ as advancedLogger};