Very Popular
Latest
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103import { bold, cyan, gray, italic, red, yellow } from "./deps.ts";
export enum LogLevels { Debug, Info, Warn, Error, Fatal,}
const prefixes = new Map<LogLevels, string>([ [LogLevels.Debug, "DEBUG"], [LogLevels.Info, "INFO"], [LogLevels.Warn, "WARN"], [LogLevels.Error, "ERROR"], [LogLevels.Fatal, "FATAL"],]);
const noColor: (str: string) => string = (msg) => msg;const colorFunctions = new Map<LogLevels, (str: string) => string>([ [LogLevels.Debug, gray], [LogLevels.Info, cyan], [LogLevels.Warn, yellow], [LogLevels.Error, (str: string) => red(str)], [LogLevels.Fatal, (str: string) => red(bold(italic(str)))],]);
export function logger({ logLevel = LogLevels.Info, name,}: { logLevel?: LogLevels; name?: string;} = {}) { function log(level: LogLevels, ...args: any[]) { if (level < logLevel) return;
let color = colorFunctions.get(level); if (!color) color = noColor;
const date = new Date(); const log = [ `[${date.toLocaleDateString()} ${date.toLocaleTimeString()}]`, color(prefixes.get(level) || "DEBUG"), name ? `${name} >` : ">", ...args, ];
switch (level) { case LogLevels.Debug: return console.debug(...log); case LogLevels.Info: return console.info(...log); case LogLevels.Warn: return console.warn(...log); case LogLevels.Error: return console.error(...log); case LogLevels.Fatal: return console.error(...log); default: return console.log(...log); } }
function setLevel(level: LogLevels) { logLevel = level; }
function debug(...args: any[]) { log(LogLevels.Debug, ...args); }
function info(...args: any[]) { log(LogLevels.Info, ...args); }
function warn(...args: any[]) { log(LogLevels.Warn, ...args); }
function error(...args: any[]) { log(LogLevels.Error, ...args); }
function fatal(...args: any[]) { log(LogLevels.Fatal, ...args); }
return { log, setLevel, debug, info, warn, error, fatal, };}
export const log = logger({ name: "Main" });export const createLogger = logger;export default log;