forked from nodejs/node
-
Notifications
You must be signed in to change notification settings - Fork 22
Expand file tree
/
Copy pathlogging.js
More file actions
33 lines (30 loc) · 813 Bytes
/
logging.js
File metadata and controls
33 lines (30 loc) · 813 Bytes
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
const options = require('./options.js')
const { quiet = false } = options
const { loglevel = quiet ? 'warn' : 'silly' } = options
const levels = [
'silly',
'verbose',
'info',
'timing',
'http',
'notice',
'warn',
'error',
'silent',
]
const levelMap = new Map(levels.reduce((set, level, index) => {
set.push([level, index], [index, level])
return set
}, []))
const { inspect, format } = require('util')
if (loglevel !== 'silent') {
process.on('log', (level, ...args) => {
if (levelMap.get(level) < levelMap.get(loglevel))
return
const pref = `${process.pid} ${level} `
if (level === 'warn' && args[0] === 'ERESOLVE')
args[2] = inspect(args[2], { depth: 10 })
const msg = pref + format(...args).trim().split('\n').join(`\n${pref}`)
console.error(msg)
})
}