apf-node-common 1.0.107 → 1.0.110
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/ApplicationContextService.js +103 -103
- package/CoreUtils.js +59 -59
- package/Logger/index.js +93 -93
- package/Logger/loggerTransports.js +137 -137
- package/SSMConfig.js +44 -44
- package/ScheduleCalculationService.js +0 -0
- package/auditlog/AuditLogger.js +58 -58
- package/auditlog/AuditLoggerRepository.js +38 -38
- package/auditlog/AuditLoggerService.js +37 -37
- package/config/SSMParameters.js +16 -16
- package/constants/CommonMessages.js +14 -14
- package/constants/Frequency.js +8 -8
- package/constants/TimeZone.js +11 -11
- package/constants/UserType.js +9 -9
- package/exception/CustomException.js +36 -36
- package/exception/SendResponse.js +139 -139
- package/index.js +187 -187
- package/package.json +29 -29
- package/test/AWSUtilityIntegrationTest.js +94 -94
- package/test/FrequencyValidatorTest.js +0 -0
- package/test/LambdaCommunicationServiceTest.js +83 -83
- package/test/ScheduleCalculationServiceTest.js +0 -0
- package/utils/HashIds.js +139 -139
- package/utils/NumberFormatter.js +253 -253
- package/utils/aws/AESEncryptionUsingKMS.js +106 -106
- package/utils/aws/AWSAPIKeyGenerator.js +307 -307
- package/utils/aws/AWSS3Utils.js +128 -128
- package/utils/aws/AWSSMSUtils.js +63 -63
- package/utils/aws/AWSSNSBasedEmailDispatcher.js +37 -37
- package/utils/aws/AWSSNSBasedSMSDispatcher.js +37 -37
- package/utils/aws/AWSSNSUtils.js +38 -38
- package/utils/aws/LambdaCommunicationService.js +232 -232
- package/utils/enumHelper.js +7 -7
- package/utils/thirdparty/URLShorteningService.js +25 -25
- package/validation/CoreValidations.js +45 -45
- package/validation/FrequencyValidator.js +0 -0
- package/validation/SchemaValidation.js +106 -106
|
@@ -1,103 +1,103 @@
|
|
|
1
|
-
//const log = require('./Logger/index').getLogger();
|
|
2
|
-
|
|
3
|
-
const sendResponse= require('./exception/SendResponse')
|
|
4
|
-
var jwt = require('jsonwebtoken');
|
|
5
|
-
const {UserType} = require('./constants/UserType');
|
|
6
|
-
|
|
7
|
-
exports.setContextAttributes = async (req, res,httpContext, next)=>{
|
|
8
|
-
const log = require('./index').Logger;
|
|
9
|
-
let authToken=req.get('Authorization');
|
|
10
|
-
log.info('httpContext : ' + httpContext);
|
|
11
|
-
|
|
12
|
-
if (!authToken) {
|
|
13
|
-
|
|
14
|
-
// console.log('authToken ' + authToken);
|
|
15
|
-
// const result = sendResponse.unAuthorizedAccess(res);
|
|
16
|
-
// res.status(result.statuscode).send(result.response);
|
|
17
|
-
next();
|
|
18
|
-
|
|
19
|
-
} else {
|
|
20
|
-
try{
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
authToken = authToken.replace('Bearer','').trim();
|
|
25
|
-
const payload = jwt.decode(authToken, {complete: true}).payload;
|
|
26
|
-
|
|
27
|
-
if (payload) {
|
|
28
|
-
log.info(JSON.stringify(payload));
|
|
29
|
-
|
|
30
|
-
if (payload.Admin=='1' && (payload.UserType).toLowerCase()===UserType.GLOBAL) {
|
|
31
|
-
httpContext.set('IsGlobalAdmin',true);
|
|
32
|
-
httpContext.set('IsAdmin',true);
|
|
33
|
-
|
|
34
|
-
log.info(`Context - IsGlobalAdmin - ${httpContext.get('IsGlobalAdmin')}`);
|
|
35
|
-
log.info(`Context - IsAdmin - ${httpContext.get('IsAdmin')}`);
|
|
36
|
-
|
|
37
|
-
} else if ((payload.Admin==='1') && ((payload.UserType).toLowerCase()==UserType.MERCHANT)) {
|
|
38
|
-
httpContext.set('IsAdmin',true);
|
|
39
|
-
httpContext.set('IsMerchantAdmin',true);
|
|
40
|
-
|
|
41
|
-
log.info(`Context - IsMerchantAdmin - ${httpContext.get('IsMerchantAdmin')}`);
|
|
42
|
-
log.info(`Context - IsAdmin - ${httpContext.get('IsAdmin')}`);
|
|
43
|
-
|
|
44
|
-
} else if (payload.Admin==='1' && (payload.UserType).toLowerCase()===UserType.RESELLER) {
|
|
45
|
-
httpContext.set('IsResellerAdmin',true);
|
|
46
|
-
httpContext.set('IsAdmin',true);
|
|
47
|
-
|
|
48
|
-
log.info(`Context - IsResellerAdmin - ${httpContext.get('IsResellerAdmin')}`);
|
|
49
|
-
log.info(`Context - IsAdmin - ${httpContext.get('IsAdmin')}`);
|
|
50
|
-
|
|
51
|
-
} else if (payload.Admin==='1' && (payload.UserType).toLowerCase()===UserType.PARTNER) {
|
|
52
|
-
httpContext.set('IsPartnerAdmin',true);
|
|
53
|
-
httpContext.set('IsAdmin',true);
|
|
54
|
-
|
|
55
|
-
log.info(`Context - IsPartnerAdmin - ${httpContext.get('IsPartnerAdmin')}`);
|
|
56
|
-
log.info(`Context - IsAdmin - ${httpContext.get('IsAdmin')}`);
|
|
57
|
-
|
|
58
|
-
}else if(payload.Admin==='1' && (payload.UserType).toLowerCase() === UserType.CUSTOMER){
|
|
59
|
-
httpContext.set('IsAdmin',true);
|
|
60
|
-
httpContext.set('CustomerUserName',payload.Id);
|
|
61
|
-
|
|
62
|
-
log.info(`Context - IsAdmin - ${httpContext.get('IsAdmin')}`);
|
|
63
|
-
}else if (payload.Admin==='0'){
|
|
64
|
-
httpContext.set('IsAdmin',false);
|
|
65
|
-
log.info(`Context - UserType - ${payload.UserType}`);
|
|
66
|
-
log.info(`Context - IsAdmin - ${httpContext.get('IsAdmin')}`);
|
|
67
|
-
}
|
|
68
|
-
httpContext.set('ParentId',payload.ParentId)
|
|
69
|
-
httpContext.set('ResellerId',payload.ResellerId)
|
|
70
|
-
httpContext.set('PartnerId',payload.PartnerId)
|
|
71
|
-
httpContext.set('MerchantId',payload.MerchantId)
|
|
72
|
-
httpContext.set('CustomerId',payload.CustomerId)
|
|
73
|
-
httpContext.set('UserType', payload.UserType)
|
|
74
|
-
httpContext.set('Admin', payload.Admin)
|
|
75
|
-
|
|
76
|
-
httpContext.set('username',payload.sub)
|
|
77
|
-
httpContext.set('TimeZone',payload.TimeZone)
|
|
78
|
-
|
|
79
|
-
log.info(`username - ${httpContext.get('username')}`);
|
|
80
|
-
next();
|
|
81
|
-
} else {
|
|
82
|
-
return sendResponse.unAuthorizedAccess(res);
|
|
83
|
-
}
|
|
84
|
-
}catch(error){
|
|
85
|
-
const result = sendResponse.unAuthorizedAccess(res);
|
|
86
|
-
res.status(result.statuscode).send(result.response);
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
// function userMiddleware (req, res, next) {
|
|
92
|
-
// getUserViaJWT(req.headers.authentication)
|
|
93
|
-
// .then(function(user) {
|
|
94
|
-
// req.user = user
|
|
95
|
-
// next()
|
|
96
|
-
// })
|
|
97
|
-
// .catch(function (error) {
|
|
98
|
-
// res.status(401).end() //replace with proper error handling
|
|
99
|
-
// })
|
|
100
|
-
// }
|
|
101
|
-
// app.use(userMiddleware)
|
|
102
|
-
|
|
103
|
-
|
|
1
|
+
//const log = require('./Logger/index').getLogger();
|
|
2
|
+
|
|
3
|
+
const sendResponse= require('./exception/SendResponse')
|
|
4
|
+
var jwt = require('jsonwebtoken');
|
|
5
|
+
const {UserType} = require('./constants/UserType');
|
|
6
|
+
|
|
7
|
+
exports.setContextAttributes = async (req, res,httpContext, next)=>{
|
|
8
|
+
const log = require('./index').Logger;
|
|
9
|
+
let authToken=req.get('Authorization');
|
|
10
|
+
log.info('httpContext : ' + httpContext);
|
|
11
|
+
|
|
12
|
+
if (!authToken) {
|
|
13
|
+
|
|
14
|
+
// console.log('authToken ' + authToken);
|
|
15
|
+
// const result = sendResponse.unAuthorizedAccess(res);
|
|
16
|
+
// res.status(result.statuscode).send(result.response);
|
|
17
|
+
next();
|
|
18
|
+
|
|
19
|
+
} else {
|
|
20
|
+
try{
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
authToken = authToken.replace('Bearer','').trim();
|
|
25
|
+
const payload = jwt.decode(authToken, {complete: true}).payload;
|
|
26
|
+
|
|
27
|
+
if (payload) {
|
|
28
|
+
log.info(JSON.stringify(payload));
|
|
29
|
+
|
|
30
|
+
if (payload.Admin=='1' && (payload.UserType).toLowerCase()===UserType.GLOBAL) {
|
|
31
|
+
httpContext.set('IsGlobalAdmin',true);
|
|
32
|
+
httpContext.set('IsAdmin',true);
|
|
33
|
+
|
|
34
|
+
log.info(`Context - IsGlobalAdmin - ${httpContext.get('IsGlobalAdmin')}`);
|
|
35
|
+
log.info(`Context - IsAdmin - ${httpContext.get('IsAdmin')}`);
|
|
36
|
+
|
|
37
|
+
} else if ((payload.Admin==='1') && ((payload.UserType).toLowerCase()==UserType.MERCHANT)) {
|
|
38
|
+
httpContext.set('IsAdmin',true);
|
|
39
|
+
httpContext.set('IsMerchantAdmin',true);
|
|
40
|
+
|
|
41
|
+
log.info(`Context - IsMerchantAdmin - ${httpContext.get('IsMerchantAdmin')}`);
|
|
42
|
+
log.info(`Context - IsAdmin - ${httpContext.get('IsAdmin')}`);
|
|
43
|
+
|
|
44
|
+
} else if (payload.Admin==='1' && (payload.UserType).toLowerCase()===UserType.RESELLER) {
|
|
45
|
+
httpContext.set('IsResellerAdmin',true);
|
|
46
|
+
httpContext.set('IsAdmin',true);
|
|
47
|
+
|
|
48
|
+
log.info(`Context - IsResellerAdmin - ${httpContext.get('IsResellerAdmin')}`);
|
|
49
|
+
log.info(`Context - IsAdmin - ${httpContext.get('IsAdmin')}`);
|
|
50
|
+
|
|
51
|
+
} else if (payload.Admin==='1' && (payload.UserType).toLowerCase()===UserType.PARTNER) {
|
|
52
|
+
httpContext.set('IsPartnerAdmin',true);
|
|
53
|
+
httpContext.set('IsAdmin',true);
|
|
54
|
+
|
|
55
|
+
log.info(`Context - IsPartnerAdmin - ${httpContext.get('IsPartnerAdmin')}`);
|
|
56
|
+
log.info(`Context - IsAdmin - ${httpContext.get('IsAdmin')}`);
|
|
57
|
+
|
|
58
|
+
}else if(payload.Admin==='1' && (payload.UserType).toLowerCase() === UserType.CUSTOMER){
|
|
59
|
+
httpContext.set('IsAdmin',true);
|
|
60
|
+
httpContext.set('CustomerUserName',payload.Id);
|
|
61
|
+
|
|
62
|
+
log.info(`Context - IsAdmin - ${httpContext.get('IsAdmin')}`);
|
|
63
|
+
}else if (payload.Admin==='0'){
|
|
64
|
+
httpContext.set('IsAdmin',false);
|
|
65
|
+
log.info(`Context - UserType - ${payload.UserType}`);
|
|
66
|
+
log.info(`Context - IsAdmin - ${httpContext.get('IsAdmin')}`);
|
|
67
|
+
}
|
|
68
|
+
httpContext.set('ParentId',payload.ParentId)
|
|
69
|
+
httpContext.set('ResellerId',payload.ResellerId)
|
|
70
|
+
httpContext.set('PartnerId',payload.PartnerId)
|
|
71
|
+
httpContext.set('MerchantId',payload.MerchantId)
|
|
72
|
+
httpContext.set('CustomerId',payload.CustomerId)
|
|
73
|
+
httpContext.set('UserType', payload.UserType)
|
|
74
|
+
httpContext.set('Admin', payload.Admin)
|
|
75
|
+
|
|
76
|
+
httpContext.set('username',payload.sub)
|
|
77
|
+
httpContext.set('TimeZone',payload.TimeZone)
|
|
78
|
+
|
|
79
|
+
log.info(`username - ${httpContext.get('username')}`);
|
|
80
|
+
next();
|
|
81
|
+
} else {
|
|
82
|
+
return sendResponse.unAuthorizedAccess(res);
|
|
83
|
+
}
|
|
84
|
+
}catch(error){
|
|
85
|
+
const result = sendResponse.unAuthorizedAccess(res);
|
|
86
|
+
res.status(result.statuscode).send(result.response);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
// function userMiddleware (req, res, next) {
|
|
92
|
+
// getUserViaJWT(req.headers.authentication)
|
|
93
|
+
// .then(function(user) {
|
|
94
|
+
// req.user = user
|
|
95
|
+
// next()
|
|
96
|
+
// })
|
|
97
|
+
// .catch(function (error) {
|
|
98
|
+
// res.status(401).end() //replace with proper error handling
|
|
99
|
+
// })
|
|
100
|
+
// }
|
|
101
|
+
// app.use(userMiddleware)
|
|
102
|
+
|
|
103
|
+
|
package/CoreUtils.js
CHANGED
|
@@ -1,60 +1,60 @@
|
|
|
1
|
-
const moment = require("moment");
|
|
2
|
-
const momentTz = require('moment-timezone');
|
|
3
|
-
const timeZoneConvertor = require('./utils/TimeZoneConverter');
|
|
4
|
-
const EnumHelper = require('./utils/enumHelper')
|
|
5
|
-
const TimeZone = require('./constants/TimeZone')
|
|
6
|
-
const DATE_TIME_DB_FORMAT = 'YYYY-MM-DD HH:mm:ss';
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
convertUCfirst = (string) => {
|
|
10
|
-
return string.charAt(0).toUpperCase() + string.slice(1);
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
//handles upto 10 digit number
|
|
14
|
-
prefixPad = (num, size) => {
|
|
15
|
-
return ('000000000' + num).substr(-size);
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
//supported date 2020-05-05T00:36:55.000Z
|
|
19
|
-
getUTCDate = (dateValue, timezone) => {
|
|
20
|
-
|
|
21
|
-
let dateWithoutTimezone = moment(dateValue, "MM-DD-YYYY HH:mm:ss").format("YYYY-MM-DD HH:mm:ss");
|
|
22
|
-
var formattedDate = momentTz.tz(dateWithoutTimezone, EnumHelper.getEnumByValue(TimeZone, timezone));
|
|
23
|
-
var utcDate = formattedDate.utc().format(DATE_TIME_DB_FORMAT);
|
|
24
|
-
return utcDate;
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
isISOFormat = (inputDate) => {
|
|
28
|
-
var ISO_8601_FULL = /^\d{4}-\d\d-\d\dT\d\d:\d\d:\d\d(\.\d+)?(([+-]\d\d:\d\d)|Z)?$/i
|
|
29
|
-
return ISO_8601_FULL.test(inputDate);
|
|
30
|
-
}
|
|
31
|
-
isInputDateTime = (inputDate) => {
|
|
32
|
-
var INPUT_DATE = /^([0]{0,1}[1-9]|1[012])-([1-9]|([012][0-9])|(3[01]))-\d\d\d\d (20|21|22|23|[0-1]?\d):[0-5]?\d:[0-5]?\d$/;
|
|
33
|
-
return INPUT_DATE.test(inputDate);
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
isInputDate = (inputDate) => {
|
|
37
|
-
var INPUT_DATE = /^([0]{0,1}[1-9]|1[012])-([1-9]|([012][0-9])|(3[01]))-\d\d\d\d$/;
|
|
38
|
-
return INPUT_DATE.test(inputDate);
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
formatSearchToDate = (timezone, toDate) => {
|
|
43
|
-
let toMerchantTimeZone = timeZoneConvertor.timeZoneConvert(parseInt(timezone), moment(toDate).utc(true));
|
|
44
|
-
let endDay = moment(toMerchantTimeZone).endOf('day').format(DATE_TIME_DB_FORMAT);
|
|
45
|
-
|
|
46
|
-
var formattedDate = momentTz.tz(endDay, EnumHelper.getEnumByValue(TimeZone, timezone));
|
|
47
|
-
var utcDate = formattedDate.utc().format(DATE_TIME_DB_FORMAT);
|
|
48
|
-
return utcDate;
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
module.exports = {
|
|
53
|
-
convertUCfirst: convertUCfirst,
|
|
54
|
-
prefixPad: prefixPad,
|
|
55
|
-
getUTCDate: getUTCDate,
|
|
56
|
-
isISOFormat: isISOFormat,
|
|
57
|
-
isInputDateTime: isInputDateTime,
|
|
58
|
-
isInputDate: isInputDate,
|
|
59
|
-
formatSearchToDate: formatSearchToDate
|
|
1
|
+
const moment = require("moment");
|
|
2
|
+
const momentTz = require('moment-timezone');
|
|
3
|
+
const timeZoneConvertor = require('./utils/TimeZoneConverter');
|
|
4
|
+
const EnumHelper = require('./utils/enumHelper')
|
|
5
|
+
const TimeZone = require('./constants/TimeZone')
|
|
6
|
+
const DATE_TIME_DB_FORMAT = 'YYYY-MM-DD HH:mm:ss';
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
convertUCfirst = (string) => {
|
|
10
|
+
return string.charAt(0).toUpperCase() + string.slice(1);
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
//handles upto 10 digit number
|
|
14
|
+
prefixPad = (num, size) => {
|
|
15
|
+
return ('000000000' + num).substr(-size);
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
//supported date 2020-05-05T00:36:55.000Z
|
|
19
|
+
getUTCDate = (dateValue, timezone) => {
|
|
20
|
+
|
|
21
|
+
let dateWithoutTimezone = moment(dateValue, "MM-DD-YYYY HH:mm:ss").format("YYYY-MM-DD HH:mm:ss");
|
|
22
|
+
var formattedDate = momentTz.tz(dateWithoutTimezone, EnumHelper.getEnumByValue(TimeZone, timezone));
|
|
23
|
+
var utcDate = formattedDate.utc().format(DATE_TIME_DB_FORMAT);
|
|
24
|
+
return utcDate;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
isISOFormat = (inputDate) => {
|
|
28
|
+
var ISO_8601_FULL = /^\d{4}-\d\d-\d\dT\d\d:\d\d:\d\d(\.\d+)?(([+-]\d\d:\d\d)|Z)?$/i
|
|
29
|
+
return ISO_8601_FULL.test(inputDate);
|
|
30
|
+
}
|
|
31
|
+
isInputDateTime = (inputDate) => {
|
|
32
|
+
var INPUT_DATE = /^([0]{0,1}[1-9]|1[012])-([1-9]|([012][0-9])|(3[01]))-\d\d\d\d (20|21|22|23|[0-1]?\d):[0-5]?\d:[0-5]?\d$/;
|
|
33
|
+
return INPUT_DATE.test(inputDate);
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
isInputDate = (inputDate) => {
|
|
37
|
+
var INPUT_DATE = /^([0]{0,1}[1-9]|1[012])-([1-9]|([012][0-9])|(3[01]))-\d\d\d\d$/;
|
|
38
|
+
return INPUT_DATE.test(inputDate);
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
formatSearchToDate = (timezone, toDate) => {
|
|
43
|
+
let toMerchantTimeZone = timeZoneConvertor.timeZoneConvert(parseInt(timezone), moment(toDate).utc(true));
|
|
44
|
+
let endDay = moment(toMerchantTimeZone).endOf('day').format(DATE_TIME_DB_FORMAT);
|
|
45
|
+
|
|
46
|
+
var formattedDate = momentTz.tz(endDay, EnumHelper.getEnumByValue(TimeZone, timezone));
|
|
47
|
+
var utcDate = formattedDate.utc().format(DATE_TIME_DB_FORMAT);
|
|
48
|
+
return utcDate;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
module.exports = {
|
|
53
|
+
convertUCfirst: convertUCfirst,
|
|
54
|
+
prefixPad: prefixPad,
|
|
55
|
+
getUTCDate: getUTCDate,
|
|
56
|
+
isISOFormat: isISOFormat,
|
|
57
|
+
isInputDateTime: isInputDateTime,
|
|
58
|
+
isInputDate: isInputDate,
|
|
59
|
+
formatSearchToDate: formatSearchToDate
|
|
60
60
|
}
|
package/Logger/index.js
CHANGED
|
@@ -1,94 +1,94 @@
|
|
|
1
|
-
'use strict'
|
|
2
|
-
|
|
3
|
-
const winstonAwsCloudWatch = require('winston-aws-cloudwatch');
|
|
4
|
-
const winston = require('winston');
|
|
5
|
-
const config = require('./loggerTransports');
|
|
6
|
-
|
|
7
|
-
class Logger {
|
|
8
|
-
|
|
9
|
-
getLogger(module) {
|
|
10
|
-
const logType = process.env.LOG_TYPE || 'console';
|
|
11
|
-
const level = process.env.LOG_LEVEL || "info";
|
|
12
|
-
let logger;
|
|
13
|
-
console.log(logType);
|
|
14
|
-
switch (logType) {
|
|
15
|
-
case 'off':
|
|
16
|
-
console.log('Logging is off');
|
|
17
|
-
logger = winston.createLogger(config.offTransport());
|
|
18
|
-
logger.cli();
|
|
19
|
-
break;
|
|
20
|
-
|
|
21
|
-
case 'console':
|
|
22
|
-
console.log('***********Logging to console***********');
|
|
23
|
-
logger = winston.createLogger(config.consoleTransport());
|
|
24
|
-
logger.format = winston.format.combine(winston.format.colorize(), winston.format.simple())
|
|
25
|
-
break;
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
case 'aws':
|
|
29
|
-
console.log('***********Logging to aws****************');
|
|
30
|
-
logger = winston.createLogger(config.awsTransport(module));
|
|
31
|
-
break;
|
|
32
|
-
|
|
33
|
-
case 'file':
|
|
34
|
-
console.log('***********Logging to file****************');
|
|
35
|
-
logger = winston.createLogger(config.fileTransport());
|
|
36
|
-
break;
|
|
37
|
-
|
|
38
|
-
default:
|
|
39
|
-
console.log('***********Default chosen:Logging to console***********');
|
|
40
|
-
logger = (config.consoleTransport());
|
|
41
|
-
logger.cli();
|
|
42
|
-
break;
|
|
43
|
-
|
|
44
|
-
}
|
|
45
|
-
logger.level = level;
|
|
46
|
-
logger.format = this.getRequestLogFormatter();
|
|
47
|
-
// Call exceptions.handle with a transport to handle exceptions
|
|
48
|
-
// logger.exceptions.handle(
|
|
49
|
-
// new winston.transports.File({ filename: 'exceptions.log' })
|
|
50
|
-
// );
|
|
51
|
-
|
|
52
|
-
/* const DailyRotateFile = require('winston-daily-rotate-file');
|
|
53
|
-
logger.configure({
|
|
54
|
-
level: 'verbose',
|
|
55
|
-
transports: [
|
|
56
|
-
new DailyRotateFile(opts)
|
|
57
|
-
]
|
|
58
|
-
});*/
|
|
59
|
-
logger.exitOnError = false; //winston will not exit after logging an uncaughtException
|
|
60
|
-
return logger;
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
getRequestLogFormatter() {
|
|
64
|
-
const { combine, timestamp, printf } = winston.format;
|
|
65
|
-
|
|
66
|
-
return combine(
|
|
67
|
-
timestamp({
|
|
68
|
-
format: 'YYYY-MM-DD HH:mm:ss'
|
|
69
|
-
}),
|
|
70
|
-
// [${info.label}] winston.format.label({ label: path.basename(process.mainModule.filename) }),
|
|
71
|
-
winston.format.printf(info => `${info.timestamp} ${info.level} : ${info.message}`)
|
|
72
|
-
|
|
73
|
-
);
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
logError(err, req, res, next) {
|
|
78
|
-
logger.error(err)
|
|
79
|
-
next();
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
logRequest(req, res, next, log) {
|
|
83
|
-
log.info('hello');
|
|
84
|
-
next();
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
getLog() {
|
|
88
|
-
return this.logger;
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
}
|
|
1
|
+
'use strict'
|
|
2
|
+
|
|
3
|
+
const winstonAwsCloudWatch = require('winston-aws-cloudwatch');
|
|
4
|
+
const winston = require('winston');
|
|
5
|
+
const config = require('./loggerTransports');
|
|
6
|
+
|
|
7
|
+
class Logger {
|
|
8
|
+
|
|
9
|
+
getLogger(module) {
|
|
10
|
+
const logType = process.env.LOG_TYPE || 'console';
|
|
11
|
+
const level = process.env.LOG_LEVEL || "info";
|
|
12
|
+
let logger;
|
|
13
|
+
console.log(logType);
|
|
14
|
+
switch (logType) {
|
|
15
|
+
case 'off':
|
|
16
|
+
console.log('Logging is off');
|
|
17
|
+
logger = winston.createLogger(config.offTransport());
|
|
18
|
+
logger.cli();
|
|
19
|
+
break;
|
|
20
|
+
|
|
21
|
+
case 'console':
|
|
22
|
+
console.log('***********Logging to console***********');
|
|
23
|
+
logger = winston.createLogger(config.consoleTransport());
|
|
24
|
+
logger.format = winston.format.combine(winston.format.colorize(), winston.format.simple())
|
|
25
|
+
break;
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
case 'aws':
|
|
29
|
+
console.log('***********Logging to aws****************');
|
|
30
|
+
logger = winston.createLogger(config.awsTransport(module));
|
|
31
|
+
break;
|
|
32
|
+
|
|
33
|
+
case 'file':
|
|
34
|
+
console.log('***********Logging to file****************');
|
|
35
|
+
logger = winston.createLogger(config.fileTransport());
|
|
36
|
+
break;
|
|
37
|
+
|
|
38
|
+
default:
|
|
39
|
+
console.log('***********Default chosen:Logging to console***********');
|
|
40
|
+
logger = (config.consoleTransport());
|
|
41
|
+
logger.cli();
|
|
42
|
+
break;
|
|
43
|
+
|
|
44
|
+
}
|
|
45
|
+
logger.level = level;
|
|
46
|
+
logger.format = this.getRequestLogFormatter();
|
|
47
|
+
// Call exceptions.handle with a transport to handle exceptions
|
|
48
|
+
// logger.exceptions.handle(
|
|
49
|
+
// new winston.transports.File({ filename: 'exceptions.log' })
|
|
50
|
+
// );
|
|
51
|
+
|
|
52
|
+
/* const DailyRotateFile = require('winston-daily-rotate-file');
|
|
53
|
+
logger.configure({
|
|
54
|
+
level: 'verbose',
|
|
55
|
+
transports: [
|
|
56
|
+
new DailyRotateFile(opts)
|
|
57
|
+
]
|
|
58
|
+
});*/
|
|
59
|
+
logger.exitOnError = false; //winston will not exit after logging an uncaughtException
|
|
60
|
+
return logger;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
getRequestLogFormatter() {
|
|
64
|
+
const { combine, timestamp, printf } = winston.format;
|
|
65
|
+
|
|
66
|
+
return combine(
|
|
67
|
+
timestamp({
|
|
68
|
+
format: 'YYYY-MM-DD HH:mm:ss'
|
|
69
|
+
}),
|
|
70
|
+
// [${info.label}] winston.format.label({ label: path.basename(process.mainModule.filename) }),
|
|
71
|
+
winston.format.printf(info => `${info.timestamp} ${info.level} : ${info.message}`)
|
|
72
|
+
|
|
73
|
+
);
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
logError(err, req, res, next) {
|
|
78
|
+
logger.error(err)
|
|
79
|
+
next();
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
logRequest(req, res, next, log) {
|
|
83
|
+
log.info('hello');
|
|
84
|
+
next();
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
getLog() {
|
|
88
|
+
return this.logger;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
|
|
92
|
+
|
|
93
|
+
}
|
|
94
94
|
module.exports = new Logger;
|