@compodoc/compodoc
Version:
The missing documentation tool for your Angular application
78 lines (62 loc) • 1.55 kB
text/typescript
let log = require('fancy-log');
let c = require('chalk');
enum LEVEL {
INFO,
DEBUG,
ERROR,
WARN
}
class Logger {
public logger;
public silent;
constructor() {
this.logger = log;
this.silent = true;
}
public info(...args) {
if (!this.silent) {
return;
}
this.logger(this.format(LEVEL.INFO, ...args));
}
public error(...args) {
this.logger(this.format(LEVEL.ERROR, ...args));
}
public warn(...args) {
if (!this.silent) {
return;
}
this.logger(this.format(LEVEL.WARN, ...args));
}
public debug(...args) {
if (!this.silent) {
return;
}
this.logger(this.format(LEVEL.DEBUG, ...args));
}
private format(level, ...args) {
let pad = (s, l, z = '') => {
return s + Array(Math.max(0, l - s.length + 1)).join(z);
};
let msg = args.join(' ');
if (args.length > 1) {
msg = `${pad(args.shift(), 15, ' ')}: ${args.join(' ')}`;
}
switch (level) {
case LEVEL.INFO:
msg = c.green(msg);
break;
case LEVEL.DEBUG:
msg = c.cyan(msg);
break;
case LEVEL.WARN:
msg = c.yellow(msg);
break;
case LEVEL.ERROR:
msg = c.red(msg);
break;
}
return [msg].join('');
}
}
export let logger = new Logger();