@dtducas/wh-log-track 0.0.9 → 0.1.0
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/dist/core/constants.d.ts +2 -2
- package/dist/core/constants.d.ts.map +1 -1
- package/dist/core/constants.js +2 -2
- package/dist/core/constants.js.map +1 -1
- package/dist/core/wh-log.options.d.ts +15 -0
- package/dist/core/wh-log.options.d.ts.map +1 -1
- package/dist/node/express.middleware.d.ts.map +1 -1
- package/dist/node/express.middleware.js +9 -4
- package/dist/node/express.middleware.js.map +1 -1
- package/package.json +1 -1
package/dist/core/constants.d.ts
CHANGED
|
@@ -17,10 +17,10 @@ export declare const DEFAULT_AWS_REGION = "ap-southeast-1";
|
|
|
17
17
|
*/
|
|
18
18
|
export declare const DEFAULT_LOG_GROUP_PATTERN = "/ecs/{appName}-requests";
|
|
19
19
|
/**
|
|
20
|
-
* Source context
|
|
20
|
+
* Source context for wh-log-track package
|
|
21
21
|
* Used for filtering logs in CloudWatch dashboard
|
|
22
22
|
*/
|
|
23
|
-
export declare const SOURCE_CONTEXT = "
|
|
23
|
+
export declare const SOURCE_CONTEXT = "WOHHUP.LOGTRACK";
|
|
24
24
|
/**
|
|
25
25
|
* Default CloudWatch batch settings
|
|
26
26
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/core/constants.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;GAGG;AACH,eAAO,MAAM,wBAAwB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAQ3D,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,kBAAkB,mBAAmB,CAAC;AAEnD;;;GAGG;AACH,eAAO,MAAM,yBAAyB,4BAA4B,CAAC;AAEnE;;;GAGG;AACH,eAAO,MAAM,cAAc,
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/core/constants.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;GAGG;AACH,eAAO,MAAM,wBAAwB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAQ3D,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,kBAAkB,mBAAmB,CAAC;AAEnD;;;GAGG;AACH,eAAO,MAAM,yBAAyB,4BAA4B,CAAC;AAEnE;;;GAGG;AACH,eAAO,MAAM,cAAc,oBAAoB,CAAC;AAEhD;;GAEG;AACH,eAAO,MAAM,kBAAkB,MAAM,CAAC;AACtC,eAAO,MAAM,yBAAyB,QAAQ,CAAC;AAE/C;;GAEG;AACH,eAAO,MAAM,sBAAsB,IAAI,CAAC;AAExC;;GAEG;AACH,eAAO,MAAM,UAAU,UAA8B,CAAC;AAEtD;;GAEG;AACH,eAAO,MAAM,YAAY,UAAc,CAAC"}
|
package/dist/core/constants.js
CHANGED
|
@@ -28,10 +28,10 @@ exports.DEFAULT_AWS_REGION = 'ap-southeast-1';
|
|
|
28
28
|
*/
|
|
29
29
|
exports.DEFAULT_LOG_GROUP_PATTERN = '/ecs/{appName}-requests';
|
|
30
30
|
/**
|
|
31
|
-
* Source context
|
|
31
|
+
* Source context for wh-log-track package
|
|
32
32
|
* Used for filtering logs in CloudWatch dashboard
|
|
33
33
|
*/
|
|
34
|
-
exports.SOURCE_CONTEXT = '
|
|
34
|
+
exports.SOURCE_CONTEXT = 'WOHHUP.LOGTRACK';
|
|
35
35
|
/**
|
|
36
36
|
* Default CloudWatch batch settings
|
|
37
37
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/core/constants.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH;;;GAGG;AACU,QAAA,wBAAwB,GAA2B;IAC9D,KAAK,EAAE,OAAO;IACd,IAAI,EAAE,SAAS;IACf,IAAI,EAAE,aAAa;IACnB,IAAI,EAAE,aAAa;IACnB,OAAO,EAAE,SAAS;IAClB,KAAK,EAAE,OAAO;IACd,KAAK,EAAE,SAAS;CACjB,CAAC;AAEF;;GAEG;AACU,QAAA,kBAAkB,GAAG,gBAAgB,CAAC;AAEnD;;;GAGG;AACU,QAAA,yBAAyB,GAAG,yBAAyB,CAAC;AAEnE;;;GAGG;AACU,QAAA,cAAc,GAAG,
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/core/constants.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH;;;GAGG;AACU,QAAA,wBAAwB,GAA2B;IAC9D,KAAK,EAAE,OAAO;IACd,IAAI,EAAE,SAAS;IACf,IAAI,EAAE,aAAa;IACnB,IAAI,EAAE,aAAa;IACnB,OAAO,EAAE,SAAS;IAClB,KAAK,EAAE,OAAO;IACd,KAAK,EAAE,SAAS;CACjB,CAAC;AAEF;;GAEG;AACU,QAAA,kBAAkB,GAAG,gBAAgB,CAAC;AAEnD;;;GAGG;AACU,QAAA,yBAAyB,GAAG,yBAAyB,CAAC;AAEnE;;;GAGG;AACU,QAAA,cAAc,GAAG,iBAAiB,CAAC;AAEhD;;GAEG;AACU,QAAA,kBAAkB,GAAG,GAAG,CAAC;AACzB,QAAA,yBAAyB,GAAG,KAAK,CAAC,CAAC,aAAa;AAE7D;;GAEG;AACU,QAAA,sBAAsB,GAAG,CAAC,CAAC;AAExC;;GAEG;AACU,QAAA,UAAU,GAAG,CAAC,cAAc,EAAE,SAAS,CAAC,CAAC;AAEtD;;GAEG;AACU,QAAA,YAAY,GAAG,CAAC,SAAS,CAAC,CAAC"}
|
|
@@ -96,5 +96,20 @@ export interface WhLogTrackOptions {
|
|
|
96
96
|
* Default: 'info'
|
|
97
97
|
*/
|
|
98
98
|
minLevel?: string;
|
|
99
|
+
/**
|
|
100
|
+
* Source context for logs
|
|
101
|
+
* Default: 'WhLogTrack.RequestLoggingMiddleware'
|
|
102
|
+
*/
|
|
103
|
+
sourceContext?: string;
|
|
104
|
+
/**
|
|
105
|
+
* Paths to skip from request logging
|
|
106
|
+
* Default: ['/healthcheck', '/health']
|
|
107
|
+
*/
|
|
108
|
+
skipPaths?: string[];
|
|
109
|
+
/**
|
|
110
|
+
* HTTP methods to skip from request logging
|
|
111
|
+
* Default: ['OPTIONS']
|
|
112
|
+
*/
|
|
113
|
+
skipMethods?: string[];
|
|
99
114
|
}
|
|
100
115
|
//# sourceMappingURL=wh-log.options.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wh-log.options.d.ts","sourceRoot":"","sources":["../../src/core/wh-log.options.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;;;GAIG;AACH,MAAM,WAAW,cAAc;IAC7B;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;OAEG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,QAAQ,GAAG,SAAS,CAAC;AAE1D;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC;;;OAGG;IACH,OAAO,EAAE,MAAM,CAAC;IAEhB;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;;OAGG;IACH,aAAa,EAAE,OAAO,CAAC;IAEvB;;;OAGG;IACH,UAAU,EAAE,OAAO,CAAC;IAEpB;;;;;;OAMG;IACH,aAAa,CAAC,EAAE,aAAa,CAAC;IAE9B;;OAEG;IACH,UAAU,CAAC,EAAE,iBAAiB,CAAC;IAE/B;;;OAGG;IACH,GAAG,CAAC,EAAE,cAAc,CAAC;IAErB;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"wh-log.options.d.ts","sourceRoot":"","sources":["../../src/core/wh-log.options.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;;;GAIG;AACH,MAAM,WAAW,cAAc;IAC7B;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;OAEG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,QAAQ,GAAG,SAAS,CAAC;AAE1D;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC;;;OAGG;IACH,OAAO,EAAE,MAAM,CAAC;IAEhB;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;;OAGG;IACH,aAAa,EAAE,OAAO,CAAC;IAEvB;;;OAGG;IACH,UAAU,EAAE,OAAO,CAAC;IAEpB;;;;;;OAMG;IACH,aAAa,CAAC,EAAE,aAAa,CAAC;IAE9B;;OAEG;IACH,UAAU,CAAC,EAAE,iBAAiB,CAAC;IAE/B;;;OAGG;IACH,GAAG,CAAC,EAAE,cAAc,CAAC;IAErB;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IAErB;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;CACxB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"express.middleware.d.ts","sourceRoot":"","sources":["../../src/node/express.middleware.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAK1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAkE3D;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,iBAAiB,
|
|
1
|
+
{"version":3,"file":"express.middleware.d.ts","sourceRoot":"","sources":["../../src/node/express.middleware.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAK1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAkE3D;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,iBAAiB,IAYhD,KAAK,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,YAAY,UAsDxD;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,CAAC,EAAE,iBAAiB,IAOnD,KAAK,KAAK,EAAE,KAAK,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,YAAY,UAyBpE"}
|
|
@@ -50,14 +50,14 @@ function getEndpointName(req) {
|
|
|
50
50
|
/**
|
|
51
51
|
* Check if request should be skipped from logging
|
|
52
52
|
*/
|
|
53
|
-
function shouldSkipRequest(req) {
|
|
53
|
+
function shouldSkipRequest(req, skipPaths, skipMethods) {
|
|
54
54
|
// Skip health check paths
|
|
55
55
|
const path = req.originalUrl || req.url;
|
|
56
|
-
if (
|
|
56
|
+
if (skipPaths.some((skipPath) => path.includes(skipPath))) {
|
|
57
57
|
return true;
|
|
58
58
|
}
|
|
59
59
|
// Skip OPTIONS requests
|
|
60
|
-
if (
|
|
60
|
+
if (skipMethods.includes(req.method)) {
|
|
61
61
|
return true;
|
|
62
62
|
}
|
|
63
63
|
return false;
|
|
@@ -73,9 +73,13 @@ function whLogMiddleware(options) {
|
|
|
73
73
|
const logger = (0, logger_factory_1.createWhLogger)(options);
|
|
74
74
|
// Setup graceful shutdown
|
|
75
75
|
(0, logger_factory_1.setupGracefulShutdown)(logger);
|
|
76
|
+
// Get configuration values with defaults
|
|
77
|
+
const sourceContext = options.sourceContext || constants_1.SOURCE_CONTEXT;
|
|
78
|
+
const skipPaths = options.skipPaths || constants_1.SKIP_PATHS;
|
|
79
|
+
const skipMethods = options.skipMethods || constants_1.SKIP_METHODS;
|
|
76
80
|
return (req, res, next) => {
|
|
77
81
|
// Skip certain requests
|
|
78
|
-
if (shouldSkipRequest(req)) {
|
|
82
|
+
if (shouldSkipRequest(req, skipPaths, skipMethods)) {
|
|
79
83
|
return next();
|
|
80
84
|
}
|
|
81
85
|
// Generate request identifiers
|
|
@@ -100,6 +104,7 @@ function whLogMiddleware(options) {
|
|
|
100
104
|
Elapsed: elapsedMs,
|
|
101
105
|
RequestId: requestId,
|
|
102
106
|
ConnectionId: connectionId,
|
|
107
|
+
context: sourceContext,
|
|
103
108
|
});
|
|
104
109
|
});
|
|
105
110
|
// Log errors on response error
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"express.middleware.js","sourceRoot":"","sources":["../../src/node/express.middleware.ts"],"names":[],"mappings":";AAAA;;GAEG;;AA+EH,
|
|
1
|
+
{"version":3,"file":"express.middleware.js","sourceRoot":"","sources":["../../src/node/express.middleware.ts"],"names":[],"mappings":"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"}
|