@autofleet/node-common 1.1.1 → 1.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/logger/example.js +3 -1
- package/logger/index.js +31 -8
- package/logger/index.test.js +20 -22
- package/package.json +1 -1
package/logger/example.js
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
const logger = require('./index')('debug')
|
|
2
|
+
|
|
2
3
|
logger.info('it is working')
|
|
3
4
|
logger.error('errors displayed in logs/error.log')
|
|
4
|
-
logger.debug('debug with object', {a: 5})
|
|
5
|
+
logger.debug('debug with object', { a: 5 })
|
|
6
|
+
logger.debug('debug with 2 objects', { 1: { a: 5 }, 2: { b: 2 } })
|
package/logger/index.js
CHANGED
|
@@ -1,4 +1,7 @@
|
|
|
1
|
-
const
|
|
1
|
+
const { createLogger, transports, format } = require('winston')
|
|
2
|
+
|
|
3
|
+
const { combine, timestamp, printf } = format
|
|
4
|
+
|
|
2
5
|
require('dotenv').config()
|
|
3
6
|
|
|
4
7
|
const { env } = process
|
|
@@ -12,20 +15,39 @@ const getLevel = (logLevel) => {
|
|
|
12
15
|
}
|
|
13
16
|
|
|
14
17
|
const getTransporters = () => {
|
|
15
|
-
|
|
18
|
+
const consoleTrasporter = new transports.Console()
|
|
19
|
+
let transporters = [consoleTrasporter]
|
|
16
20
|
if (env.USE_LOG_FILES === 'true') {
|
|
17
21
|
transporters = transporters.concat([
|
|
18
|
-
new
|
|
19
|
-
new
|
|
22
|
+
new transports.File({ filename: 'logs/error.log', level: 'error' }),
|
|
23
|
+
new transports.File({ filename: 'logs/all.log' }),
|
|
20
24
|
])
|
|
21
25
|
}
|
|
22
26
|
return transporters
|
|
23
27
|
}
|
|
24
28
|
|
|
25
|
-
const
|
|
26
|
-
const
|
|
29
|
+
const newLogger = (level, transporters) => {
|
|
30
|
+
const customFormat = printf((info) => {
|
|
31
|
+
const level = info.level
|
|
32
|
+
const message = info.message
|
|
33
|
+
const timestamp = info.timestamp
|
|
34
|
+
delete info.level
|
|
35
|
+
delete info.message
|
|
36
|
+
delete info.timestamp
|
|
37
|
+
const params = JSON.stringify(info, null, 2)
|
|
38
|
+
return `${level}: ${message} ${timestamp} \n ${params} \n *****************`
|
|
39
|
+
})
|
|
40
|
+
|
|
41
|
+
const logger = createLogger({
|
|
42
|
+
format: combine(
|
|
43
|
+
format.colorize(),
|
|
44
|
+
// format.json(),
|
|
45
|
+
format.simple(),
|
|
46
|
+
// prettyPrint(),
|
|
47
|
+
timestamp(),
|
|
48
|
+
customFormat,
|
|
49
|
+
),
|
|
27
50
|
level,
|
|
28
|
-
format: winston.format.json(),
|
|
29
51
|
transports: transporters,
|
|
30
52
|
})
|
|
31
53
|
|
|
@@ -35,7 +57,8 @@ const createLogger = (level, transporters) => {
|
|
|
35
57
|
const getLogger = (logLevel) => {
|
|
36
58
|
const level = getLevel(logLevel)
|
|
37
59
|
const transporters = getTransporters()
|
|
38
|
-
return
|
|
60
|
+
return newLogger(level, transporters)
|
|
39
61
|
}
|
|
40
62
|
|
|
41
63
|
module.exports = getLogger
|
|
64
|
+
|
package/logger/index.test.js
CHANGED
|
@@ -14,52 +14,50 @@ const deleteLogFile = (filePath) => {
|
|
|
14
14
|
}
|
|
15
15
|
}
|
|
16
16
|
|
|
17
|
-
const waitForFileToHaveContent = ((
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
})
|
|
25
|
-
})
|
|
17
|
+
const waitForFileToHaveContent = (filePath => wait.limit(30).until(() => {
|
|
18
|
+
if (fs.existsSync(filePath)) {
|
|
19
|
+
const content = fs.readFileSync(filePath, 'utf8')
|
|
20
|
+
return content !== ''
|
|
21
|
+
}
|
|
22
|
+
return false
|
|
23
|
+
}))
|
|
26
24
|
|
|
27
25
|
describe('Logger', () => {
|
|
28
26
|
it('it`s default level is info', () => {
|
|
29
|
-
env.NODE_ENV=''
|
|
27
|
+
env.NODE_ENV = ''
|
|
30
28
|
const logger = Logger()
|
|
31
29
|
expect(logger).toBeDefined()
|
|
32
30
|
expect(logger.level).toBe('info')
|
|
33
31
|
})
|
|
34
32
|
|
|
35
33
|
it('its default develpment level is debug', () => {
|
|
36
|
-
env.NODE_ENV='development'
|
|
34
|
+
env.NODE_ENV = 'development'
|
|
37
35
|
const logger = Logger()
|
|
38
36
|
expect(logger.level).toBe('debug')
|
|
39
37
|
})
|
|
40
38
|
|
|
41
39
|
it('its default test level is info', () => {
|
|
42
|
-
env.NODE_ENV='test'
|
|
40
|
+
env.NODE_ENV = 'test'
|
|
43
41
|
const logger = Logger()
|
|
44
42
|
expect(logger.level).toBe('info')
|
|
45
43
|
})
|
|
46
44
|
|
|
47
45
|
it('its default production level is info', () => {
|
|
48
|
-
env.NODE_ENV='production'
|
|
46
|
+
env.NODE_ENV = 'production'
|
|
49
47
|
const logger = Logger()
|
|
50
48
|
expect(logger.level).toBe('info')
|
|
51
49
|
})
|
|
52
50
|
|
|
53
51
|
it('its level can be override by LOG_LEVEL env variable', () => {
|
|
54
|
-
env.NODE_ENV='development'
|
|
55
|
-
env.LOG_LEVEL='warn'
|
|
52
|
+
env.NODE_ENV = 'development'
|
|
53
|
+
env.LOG_LEVEL = 'warn'
|
|
56
54
|
const logger = Logger()
|
|
57
55
|
expect(logger.level).toBe('warn')
|
|
58
56
|
})
|
|
59
57
|
|
|
60
58
|
it('its level can be override by function variable', () => {
|
|
61
|
-
env.NODE_ENV='production'
|
|
62
|
-
env.LOG_LEVEL='warn'
|
|
59
|
+
env.NODE_ENV = 'production'
|
|
60
|
+
env.LOG_LEVEL = 'warn'
|
|
63
61
|
const logger = Logger('silly')
|
|
64
62
|
expect(logger.level).toBe('silly')
|
|
65
63
|
})
|
|
@@ -75,31 +73,31 @@ describe('Logger', () => {
|
|
|
75
73
|
})
|
|
76
74
|
|
|
77
75
|
it('it can have general file transporters', async () => {
|
|
78
|
-
env.USE_LOG_FILES='true'
|
|
76
|
+
env.USE_LOG_FILES = 'true'
|
|
79
77
|
const allPath = 'logs/all.log'
|
|
80
78
|
deleteLogFile(allPath)
|
|
81
79
|
|
|
82
80
|
const logger = Logger()
|
|
83
|
-
const errorText =
|
|
81
|
+
const errorText = 'this is error'
|
|
84
82
|
logger.error(errorText)
|
|
85
83
|
|
|
86
84
|
await waitForFileToHaveContent(allPath)
|
|
87
85
|
|
|
88
86
|
expect(fs.existsSync(allPath)).toBe(true)
|
|
89
|
-
|
|
87
|
+
|
|
90
88
|
const contents = fs.readFileSync(allPath, 'utf8')
|
|
91
89
|
expect(contents).toBe(`error: ${errorText}\n`)
|
|
92
90
|
})
|
|
93
91
|
|
|
94
92
|
it('it can have general file transporters', async () => {
|
|
95
|
-
env.USE_LOG_FILES='true'
|
|
93
|
+
env.USE_LOG_FILES = 'true'
|
|
96
94
|
const errorPath = 'logs/error.log'
|
|
97
95
|
deleteLogFile(errorPath)
|
|
98
96
|
|
|
99
97
|
expect(fs.existsSync(errorPath)).toBe(false)
|
|
100
98
|
|
|
101
99
|
const logger = Logger()
|
|
102
|
-
const errorText =
|
|
100
|
+
const errorText = 'this is error'
|
|
103
101
|
logger.error(errorText)
|
|
104
102
|
|
|
105
103
|
await waitForFileToHaveContent(errorPath)
|