/
index.js
69 lines (47 loc) 路 1.35 KB
/
index.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
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
'use strict';
const Pino = require('pino');
const Package = require('./package');
const AwesomeProduct = require('./lib');
const bootstrapLogger = Pino({ level: 'info' }).child({ package: Package.name });
const instance = new AwesomeProduct();
const bootstrap = async () => {
try {
await instance.start();
bootstrapLogger.info(instance.server.info, 'INFO_INSTANCE_START');
}
catch (err) {
bootstrapLogger.fatal(err, 'FATAL_INSTANCE_START');
setTimeout(() => {
process.exit(1);
}, 500);
}
};
process.on('unhandledRejection', (err) => {
bootstrapLogger.fatal(err, 'FATAL_unhandledRejection');
setTimeout(() => {
process.exit(1);
}, 500);
});
process.on('uncaughtException', (err) => {
bootstrapLogger.fatal(err, 'FATAL_uncaughtException');
setTimeout(() => {
process.exit(1);
}, 500);
});
// Docker stop sends SIGTERM
process.on('SIGTERM', async () => {
bootstrapLogger.info('Got SIGTERM (Probably docker stop). Shutdown in 2 seconds');
await instance.stop();
setTimeout(() => {
process.exit(0);
},2000);
});
// ctrl-c sends SIGINT
process.on('SIGINT', async () => {
bootstrapLogger.info('Got SIGINT. Shutdown in 2 seconds');
await instance.stop();
setTimeout(() => {
process.exit(0);
},2000);
});
bootstrap();