-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathexamples-typescript.ts
87 lines (71 loc) · 2.88 KB
/
examples-typescript.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
import { LogEmitter, ILogWriter, formatters, writers, ILogEmitterMeta } from '@polyn/logger';
const {
BlockFormatter,
BunyanFormatter,
JsonFormatter,
PassThroughFormatter,
StringFormatter,
} = formatters
const {
ArrayWriter,
ConsoleWriter,
DevConsoleWriter,
StdoutWriter,
} = writers
const events = ['local2', 'local', 'trace', 'debug', 'info', 'warn', 'error', 'fatal']
const arrayWriter = new ArrayWriter({ formatter: new StringFormatter() })
const customWriter = function () {
const write = async (log: any, meta: ILogEmitterMeta) => {
// format the log
// write the log
console.log('CUSTOM:', log, meta)
}
const listen = (meta: ILogEmitterMeta, ...args: any) => write(
args && args.length === 1 ? args[0] : args, meta,
)
return { write, listen }
}
const ciWriter = function () {
const writer = new StdoutWriter({ formatter: new StringFormatter() })
const write = async (log: any, meta: ILogEmitterMeta) => {
writer.write({ ...log, ...meta }, meta)
}
const listen = (meta: ILogEmitterMeta, ...args: any) => write(
args && args.length === 1 ? args[0] : args, meta,
)
return { write, listen }
}
const _writers: ILogWriter[] = [
/* 0 */ new DevConsoleWriter({ formatter: new BlockFormatter() }),
/* 1 */ new DevConsoleWriter({ formatter: new BlockFormatter({ useColors: false }) }),
/* 2 */ new ConsoleWriter({ formatter: new PassThroughFormatter() }),
/* 3 */ new StdoutWriter({ formatter: new StringFormatter() }),
/* 4 */ new StdoutWriter({ formatter: new JsonFormatter() }),
/* 5 */ new StdoutWriter({ formatter: new BunyanFormatter(events) }),
/* 6 */ arrayWriter,
/* 7 */ customWriter(),
/* 8 */ ciWriter(),
]
;(() => {
const logger = new LogEmitter()
events.forEach((event: string) => {
logger.on(event, _writers[8].listen)
})
logger.emit('testing_typescript', 'local', { hello: 'local' })
logger.emit('testing_typescript', 'local2', { hello: 'local2' })
logger.emit('testing_typescript', 'trace', { hello: 'trace' })
logger.emit('testing_typescript', 'debug', { hello: 'debug' })
logger.emit('testing_typescript', 'info', { hello: 'info' })
logger.emit('testing_typescript', 'warn', { hello: 'warn' })
logger.emit('testing_typescript', 'error', { hello: 'error' })
logger.emit('testing_typescript', 'fatal', { hello: 'fatal' })
const child = logger.child({ context: { child: true, foo: 'bar' } })
child.emit('testing_typescript', 'local', { hello: 'local' })
child.emit('testing_typescript', 'local2', { hello: 'local2' })
child.emit('testing_typescript', 'trace', { hello: 'trace' })
child.emit('testing_typescript', 'debug', { hello: 'debug' })
child.emit('testing_typescript', 'info', { hello: 'info' })
child.emit('testing_typescript', 'warn', { hello: 'warn' })
child.emit('testing_typescript', 'error', { hello: 'error' })
child.emit('testing_typescript', 'fatal', { hello: 'fatal' })
})()