diary
Version:
Fast effective logging library for both Node, the Browser, and Workers!
1 lines • 1.05 kB
JavaScript
const { format:e } = require('util');var r=[],a=e=>new RegExp(e.replace(/\*/g,".*")+"$"),n=e=>{r=e.split(/[\s,]+/).map(a)};n(process.env.DEBUG||"a^");var o=(e,a,n,...o)=>{for(let l=r.length;l--;)if(r[l].test(e))return a({name:e,level:n,messages:o})},l={fatal:"✗ fatal",error:"✗ error",warn:"‼ warn ",debug:"● debug",info:"ℹ info ",log:"◆ log "},s=r=>{let a="";const n=console["fatal"===r.level?"error":r.level];a=`${l[r.level]} `,r.name&&(a+=`[${r.name}] `);{let o;const l=r.messages[0];if(l instanceof Error&&void 0!==l.stack){const e=l.stack.split("\n");e.shift(),o=`${l.message}\n${e.join("\n")}`}else o=e(...r.messages);return void n(a+o)}},t=(e,r)=>({fatal:o.bind(0,e,r=r||s,"fatal"),error:o.bind(0,e,r,"error"),warn:o.bind(0,e,r,"warn"),debug:o.bind(0,e,r,"debug"),info:o.bind(0,e,r,"info"),log:o.bind(0,e,r,"log")}),i=t(""),f=i.fatal,g=i.error,d=i.warn,b=i.debug,m=i.info,c=i.log;exports.debug=b;exports.default_reporter=s;exports.diary=t;exports.enable=n;exports.error=g;exports.fatal=f;exports.info=m;exports.log=c;exports.warn=d;