New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

@algoan/nestjs-logging-interceptor

Package Overview
Dependencies
Maintainers
2
Versions
32
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@algoan/nestjs-logging-interceptor - npm Package Compare versions

Comparing version 1.1.0 to 1.2.0

11

CHANGELOG.md

@@ -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 @@

2

dist/src/logging.interceptor.d.ts

@@ -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;

29

dist/src/logging.interceptor.js

@@ -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",

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc