@algoan/nestjs-logging-interceptor
Advanced tools
Comparing version 1.1.0 to 1.2.0
@@ -6,2 +6,13 @@ # Change Log | ||
# [1.2.0](https://github.com/algoan/nestjs-components/compare/@algoan/nestjs-logging-interceptor@1.1.0...@algoan/nestjs-logging-interceptor@1.2.0) (2020-04-06) | ||
### Features | ||
* **nestjs-logging-interceptor:** userPrefix in context,clearer messages ([cf02eb0](https://github.com/algoan/nestjs-components/commit/cf02eb0714ff79e2cc0a185c80ebfe34e7a7dfcd)) | ||
# 1.1.0 (2020-04-03) | ||
@@ -8,0 +19,0 @@ |
@@ -6,2 +6,4 @@ import { CallHandler, ExecutionContext, NestInterceptor } from '@nestjs/common'; | ||
private readonly logger; | ||
private userPrefix; | ||
setUserPrefix(prefix: string): void; | ||
intercept(context: ExecutionContext, call$: CallHandler): Observable<unknown>; | ||
@@ -8,0 +10,0 @@ private logNext; |
@@ -11,8 +11,13 @@ "use strict"; | ||
this.logger = new common_1.Logger(this.ctxPrefix); | ||
this.userPrefix = ''; | ||
} | ||
setUserPrefix(prefix) { | ||
this.userPrefix = `${prefix} - `; | ||
} | ||
intercept(context, call$) { | ||
const req = context.switchToHttp().getRequest(); | ||
const { method, url, body, headers } = req; | ||
const message = `${this.ctxPrefix} - ${method} - ${url}`; | ||
this.logger.log(message); | ||
const ctx = `${this.userPrefix}${this.ctxPrefix} - ${method} - ${url}`; | ||
const message = `Incoming request - ${method} - ${url}`; | ||
this.logger.log(message, ctx); | ||
this.logger.debug({ | ||
@@ -23,3 +28,3 @@ message, | ||
headers, | ||
}, message); | ||
}, ctx); | ||
return call$.handle().pipe(operators_1.tap({ | ||
@@ -39,8 +44,9 @@ next: (val) => { | ||
const { statusCode } = res; | ||
const resCtx = `${this.ctxPrefix} - ${statusCode} - ${method} - ${url}`; | ||
this.logger.log(resCtx); | ||
const ctx = `${this.userPrefix}${this.ctxPrefix} - ${statusCode} - ${method} - ${url}`; | ||
const message = `Outgoing response - ${statusCode} - ${method} - ${url}`; | ||
this.logger.log(message, ctx); | ||
this.logger.debug({ | ||
message: resCtx, | ||
message, | ||
body, | ||
}, resCtx); | ||
}, ctx); | ||
} | ||
@@ -51,3 +57,4 @@ logError(error, context) { | ||
const statusCode = error.getStatus(); | ||
const ctx = `${this.ctxPrefix} - ${statusCode} - ${method} - ${url}`; | ||
const ctx = `${this.userPrefix}${this.ctxPrefix} - ${statusCode} - ${method} - ${url}`; | ||
const message = `Outgoing response - ${statusCode} - ${method} - ${url}`; | ||
if (statusCode >= common_1.HttpStatus.INTERNAL_SERVER_ERROR) { | ||
@@ -58,3 +65,3 @@ this.logger.error({ | ||
body, | ||
message: ctx, | ||
message, | ||
}, error.stack, ctx); | ||
@@ -68,3 +75,3 @@ } | ||
body, | ||
message: ctx, | ||
message, | ||
}, ctx); | ||
@@ -78,2 +85,2 @@ } | ||
exports.LoggingInterceptor = LoggingInterceptor; | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nZ2luZy5pbnRlcmNlcHRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9sb2dnaW5nLmludGVyY2VwdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSwyQ0FRd0I7QUFHeEIsOENBQXFDO0FBTXJDLElBQWEsa0JBQWtCLDBCQUEvQixNQUFhLGtCQUFrQjtJQUEvQjtRQUNtQixjQUFTLEdBQVcsb0JBQWtCLENBQUMsSUFBSSxDQUFDO1FBQzVDLFdBQU0sR0FBVyxJQUFJLGVBQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7SUE0Ri9ELENBQUM7SUFyRlEsU0FBUyxDQUFDLE9BQXlCLEVBQUUsS0FBa0I7UUFDNUQsTUFBTSxHQUFHLEdBQVksT0FBTyxDQUFDLFlBQVksRUFBRSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ3pELE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsR0FBRyxHQUFHLENBQUM7UUFDM0MsTUFBTSxPQUFPLEdBQVcsR0FBRyxJQUFJLENBQUMsU0FBUyxNQUFNLE1BQU0sTUFBTSxHQUFHLEVBQUUsQ0FBQztRQUVqRSxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN6QixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FDZjtZQUNFLE9BQU87WUFDUCxNQUFNO1lBQ04sSUFBSTtZQUNKLE9BQU87U0FDUixFQUNELE9BQU8sQ0FDUixDQUFDO1FBRUYsT0FBTyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsSUFBSSxDQUN4QixlQUFHLENBQUM7WUFDRixJQUFJLEVBQUUsQ0FBQyxHQUFZLEVBQVEsRUFBRTtnQkFDM0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsT0FBTyxDQUFDLENBQUM7WUFDN0IsQ0FBQztZQUNELEtBQUssRUFBRSxDQUFDLEdBQWtCLEVBQVEsRUFBRTtnQkFDbEMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsT0FBTyxDQUFDLENBQUM7WUFDOUIsQ0FBQztTQUNGLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQztJQU9PLE9BQU8sQ0FBQyxJQUFhLEVBQUUsT0FBeUI7UUFDdEQsTUFBTSxHQUFHLEdBQVksT0FBTyxDQUFDLFlBQVksRUFBRSxDQUFDLFVBQVUsRUFBVyxDQUFDO1FBQ2xFLE1BQU0sR0FBRyxHQUFhLE9BQU8sQ0FBQyxZQUFZLEVBQUUsQ0FBQyxXQUFXLEVBQVksQ0FBQztRQUNyRSxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLEdBQUcsQ0FBQztRQUM1QixNQUFNLEVBQUUsVUFBVSxFQUFFLEdBQUcsR0FBRyxDQUFDO1FBQzNCLE1BQU0sTUFBTSxHQUFXLEdBQUcsSUFBSSxDQUFDLFNBQVMsTUFBTSxVQUFVLE1BQU0sTUFBTSxNQUFNLEdBQUcsRUFBRSxDQUFDO1FBRWhGLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUNmO1lBQ0UsT0FBTyxFQUFFLE1BQU07WUFDZixJQUFJO1NBQ0wsRUFDRCxNQUFNLENBQ1AsQ0FBQztJQUNKLENBQUM7SUFPTyxRQUFRLENBQUMsS0FBb0IsRUFBRSxPQUF5QjtRQUM5RCxNQUFNLEdBQUcsR0FBWSxPQUFPLENBQUMsWUFBWSxFQUFFLENBQUMsVUFBVSxFQUFXLENBQUM7UUFDbEUsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLEdBQUcsR0FBRyxDQUFDO1FBQ2xDLE1BQU0sVUFBVSxHQUFXLEtBQUssQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUM3QyxNQUFNLEdBQUcsR0FBVyxHQUFHLElBQUksQ0FBQyxTQUFTLE1BQU0sVUFBVSxNQUFNLE1BQU0sTUFBTSxHQUFHLEVBQUUsQ0FBQztRQUU3RSxJQUFJLFVBQVUsSUFBSSxtQkFBVSxDQUFDLHFCQUFxQixFQUFFO1lBQ2xELElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUNmO2dCQUNFLE1BQU07Z0JBQ04sR0FBRztnQkFDSCxJQUFJO2dCQUNKLE9BQU8sRUFBRSxHQUFHO2FBQ2IsRUFDRCxLQUFLLENBQUMsS0FBSyxFQUNYLEdBQUcsQ0FDSixDQUFDO1NBQ0g7YUFBTTtZQUNMLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUNkO2dCQUNFLE1BQU07Z0JBQ04sR0FBRztnQkFDSCxLQUFLO2dCQUNMLElBQUk7Z0JBQ0osT0FBTyxFQUFFLEdBQUc7YUFDYixFQUNELEdBQUcsQ0FDSixDQUFDO1NBQ0g7SUFDSCxDQUFDO0NBQ0YsQ0FBQTtBQTlGWSxrQkFBa0I7SUFEOUIsbUJBQVUsRUFBRTtHQUNBLGtCQUFrQixDQThGOUI7QUE5RlksZ0RBQWtCIn0= | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nZ2luZy5pbnRlcmNlcHRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9sb2dnaW5nLmludGVyY2VwdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSwyQ0FRd0I7QUFHeEIsOENBQXFDO0FBTXJDLElBQWEsa0JBQWtCLDBCQUEvQixNQUFhLGtCQUFrQjtJQUEvQjtRQUNtQixjQUFTLEdBQVcsb0JBQWtCLENBQUMsSUFBSSxDQUFDO1FBQzVDLFdBQU0sR0FBVyxJQUFJLGVBQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDckQsZUFBVSxHQUFXLEVBQUUsQ0FBQztJQXdHbEMsQ0FBQztJQWxHUSxhQUFhLENBQUMsTUFBYztRQUNqQyxJQUFJLENBQUMsVUFBVSxHQUFHLEdBQUcsTUFBTSxLQUFLLENBQUM7SUFDbkMsQ0FBQztJQU9NLFNBQVMsQ0FBQyxPQUF5QixFQUFFLEtBQWtCO1FBQzVELE1BQU0sR0FBRyxHQUFZLE9BQU8sQ0FBQyxZQUFZLEVBQUUsQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUN6RCxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLEdBQUcsR0FBRyxDQUFDO1FBQzNDLE1BQU0sR0FBRyxHQUFXLEdBQUcsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsU0FBUyxNQUFNLE1BQU0sTUFBTSxHQUFHLEVBQUUsQ0FBQztRQUMvRSxNQUFNLE9BQU8sR0FBVyxzQkFBc0IsTUFBTSxNQUFNLEdBQUcsRUFBRSxDQUFDO1FBRWhFLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsQ0FBQztRQUM5QixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FDZjtZQUNFLE9BQU87WUFDUCxNQUFNO1lBQ04sSUFBSTtZQUNKLE9BQU87U0FDUixFQUNELEdBQUcsQ0FDSixDQUFDO1FBRUYsT0FBTyxLQUFLLENB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 |
{ | ||
"name": "@algoan/nestjs-logging-interceptor", | ||
"version": "1.1.0", | ||
"version": "1.2.0", | ||
"description": "A simple NestJS interceptor to log input/output requests", | ||
@@ -48,3 +48,3 @@ "keywords": [ | ||
}, | ||
"gitHead": "4aa1f93aab9daabe4e4e7492b1c2a1cdf62ab7d2" | ||
"gitHead": "54039397b58422e38ae03c5e90b51c9b151ff4e4" | ||
} |
@@ -20,2 +20,3 @@ <p align="center"> | ||
## Usage | ||
### Default usage | ||
Use the interceptor as a global interceptor (cf. refer to the [last paragraph](https://docs.nestjs.com/interceptors#binding-interceptors) of this section for more details). | ||
@@ -46,2 +47,38 @@ | ||
### Factory | ||
You can also manually pass an interceptor instance through a factory function. This will give the possibility to set a `userPrefix` on the head of the default context message: | ||
Example: | ||
```typescript | ||
import { Module } from '@nestjs/common'; | ||
import { APP_INTERCEPTOR } from '@nestjs/core'; | ||
import { LoggingInterceptor } from '@algoan/nestjs-logging-interceptor'; | ||
/** | ||
* Core module: This module sets the logging interceptor as a global interceptor | ||
*/ | ||
@Module({ | ||
providers: [ | ||
{ | ||
provide: APP_INTERCEPTOR, | ||
useClass: () => { | ||
const interceptor: LoggingInterceptor = new LoggingInterceptor(); | ||
interceptor.setUserPrefix('ExampleApp'); | ||
return interceptor; | ||
}, | ||
}, | ||
], | ||
}) | ||
export class CoreModule {} | ||
``` | ||
The context message will be preprend by the provided `userPrefix`: | ||
```bash | ||
[LoggingInterceptor - GET - /error] Incoming request - GET - /error | ||
==> | ||
[ExampleApp - LoggingInterceptor - GET - /error] Incoming request - GET - /error | ||
``` | ||
## Log messages | ||
@@ -57,5 +94,5 @@ | ||
# info level | ||
[Nest] 41835 - 04/02/2020, 5:02:10 PM [LoggingInterceptor] LoggingInterceptor - GET - / | ||
[Nest] 27080 - 04/06/2020, 10:11:54 AM [LoggingInterceptor - GET - /] Incoming request - GET - / | ||
# debug level | ||
[Nest] 41835 - 04/02/2020, 5:02:10 PM [LoggingInterceptor - GET - /] Object: | ||
[Nest] 27080 - 04/06/2020, 10:11:54 AM [LoggingInterceptor - GET - /] Object: | ||
{ | ||
@@ -79,5 +116,5 @@ "message": "LoggingInterceptor - GET - /", | ||
# info level | ||
[Nest] 41835 - 04/02/2020, 5:02:10 PM [LoggingInterceptor] LoggingInterceptor - 200 - GET - / | ||
[Nest] 27080 - 04/06/2020, 10:11:54 AM [LoggingInterceptor - 200 - GET - /] Outgoing response - 200 - GET - / | ||
# debug level | ||
[Nest] 41835 - 04/02/2020, 5:02:10 PM [LoggingInterceptor - 200 - GET - /] Object: | ||
[Nest] 27080 - 04/06/2020, 10:11:54 AM [LoggingInterceptor - 200 - GET - /] Object: | ||
{ | ||
@@ -91,3 +128,3 @@ "message": "LoggingInterceptor - 200 - GET - /", | ||
# warn level | ||
[Nest] 41835 - 04/02/2020, 5:07:44 PM [LoggingInterceptor - 400 - GET - /badrequest] Object: | ||
[Nest] 27080 - 04/06/2020, 10:12:44 AM [LoggingInterceptor - 400 - GET - /badrequest] Object: | ||
{ | ||
@@ -111,3 +148,3 @@ "method": "GET", | ||
# error level | ||
[Nest] 41835 - 04/02/2020, 5:10:10 PM [LoggingInterceptor - 500 - GET - /error] Object: | ||
[Nest] 27080 - 04/06/2020, 10:12:17 AM [LoggingInterceptor - 500 - GET - /error] Object: | ||
{ | ||
@@ -114,0 +151,0 @@ "method": "GET", |
17216
94
220