UNPKG

1.44 kBPlain TextView Raw
1import colors from 'colors'
2import winston, { Logger, LoggerOptions } from 'winston'
3import timestamp from 'time-stamp';
4import supportsColor from 'color-support'
5
6function hasFlag (flag: string) {
7 return ((typeof (process) !== 'undefined') && (process.argv.indexOf('--' + flag) !== -1))
8}
9
10function addColor (str: string) {
11 if (hasFlag('no-color')) {
12 return str
13 }
14
15 if (hasFlag('color')) {
16 return colors.gray(str)
17 }
18
19 if (supportsColor()) {
20 return colors.gray(str)
21 }
22
23 return str
24}
25function getTimestamp () {
26 return '[' + addColor(timestamp('HH:mm:ss')) + ']'
27}
28// create winston logger format
29const logFmt = winston.format.printf((info) => {
30 return `${getTimestamp()} ${info.level}: ${info.message}`
31})
32
33class Log {
34 logger: Logger;
35 constructor () {
36 this.logger = winston.createLogger({
37 level: 'error',
38 transports: [new winston.transports.Console()],
39 format: winston.format.combine(
40 winston.format.colorize({ all: true }),
41 logFmt
42 )
43 })
44 }
45 setVerbosity (v: LoggerOptions["level"]) {
46 this.logger.configure({
47 level: v,
48 transports: [new winston.transports.Console()],
49 format: winston.format.combine(
50 winston.format.colorize({ all: true }),
51 logFmt
52 )
53 })
54 }
55}
56
57export = Log