-
Notifications
You must be signed in to change notification settings - Fork 2
/
log.js
33 lines (27 loc) · 1.06 KB
/
log.js
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 { appInsights } = require('./server/utils/azureAppInsights')
// eslint-disable-next-line import/order
const winston = require('winston')
const { combine, simple, timestamp, json, prettyPrint } = winston.format
const { flattenMeta } = require('./server/misc')
const flattened = winston.format((meta) => {
const { message, level, timestamp: ts, ...rest } = meta
const result = flattenMeta(rest)
Object.entries(result).forEach(([key, val]) => {
// eslint-disable-next-line no-param-reassign
meta[key] = val
})
return meta
})
const format =
process.env.NODE_ENV === 'test'
? combine(timestamp(), simple(), prettyPrint())
: combine(timestamp(), flattened(), json())
const logger = winston.createLogger({
format,
// No transports when Application Insights is enabled because App Insights automatically logs calls to the winston API.
transports: appInsights ? [] : [new winston.transports.Console({ level: 'info', handleExceptions: true })],
})
if (appInsights) {
logger.info('Application insights logger is active')
}
module.exports = logger