0.0.21 • Published 1 year ago

nestjs-sensitive-logger v0.0.21

Weekly downloads
-
License
UNLICENSED
Repository
-
Last release
1 year ago

Installation

$ npm install nestjs-sensitive-logger

Usage

  • Create a file named logger under your project directory
import {INestApplication} from '@nestjs/common';
import {
    HttpLoggingInterceptor,
    StrategyMapper,
} from 'nestjs-sensitive-logger';
import {LoggerConfig} from 'nestjs-sensitive-logger/modals';
import {StrategyType} from 'nestjs-sensitive-logger/masker/modals';

class MyCustomStrategyMapper extends StrategyMapper {
    constructor() {
        super();

        // assign a masking strategy for a field(userName) which is already located in mapper
        super.upsert('userName', StrategyType.STATIC);

        // update a masking strategy for a field(identityNo) which is located in mapper
        super.upsert('identityNo', StrategyType.EACH);

        // remove a default masking strategy for selected field
        super.delete('firstName');
    }
}

export const addLogger = (app: INestApplication) => {
    const config: LoggerConfig = {
        masking: true, // default is false
        appName: 'my-custom-app-name', // default name is "process.env.npm_package_name"
        useNestjsLogger: true, // default is false
        maskingConfig: {
            map: new MyCustomStrategyMapper(),
        },
    };
    const loggingInterceptor = new HttpLoggingInterceptor(config);
    app.useGlobalInterceptors(loggingInterceptor);
};
  • Insert "addLogger" function and call it with "app" context.
import {NestFactory} from '@nestjs/core';
import {AppModule} from './app.module';
import {addLogger} from '../utils/logger';

async function bootstrap() {
    const app = await NestFactory.create(AppModule);
    addLogger(app);
    await app.listen(3000);
}

bootstrap();

Log Pattern

Format: Timestamp|TraceId|Severity|Server Name|Server IP|Method|Endpoint|Client IP| Client ID|Body|Attr

  • Timestamp: Time when the event occurred.
  • TraceId: Request trace id.
  • AppName: The application that is logging the record.
  • Severity: Severity(info, warn, error, debug, fatal) of log
  • Server Name: Name of microservice that logs
  • Server IP: IP address of Server
  • Method: The http method type of request
  • Endpoint: The endpoint that was called
  • Client IP: IP address of Client device
  • Client ID: Colendi ID
  • Body: The response body of the log record.
  • Attributes: Additional information about the request.I.E. request body

By Default Masker Strategy Map (Every field name will be normalized)

FieldMasking Strategy
passwordStrategyType.PASSWORD
emailStrategyType.EMAIL
firstnameStrategyType.NAME
surnameStrategyType.NAME
phoneStrategyType.PHONE
panStrategyType.PAN
cvvStrategyType.EACH
identitynoStrategyType.EACH

Deploying npm package (Npm Registery credentials are required for this step)

$ rimraf dist && npx tsc
$ cp README.md dist/src && cp package.json dist/src
$ cd dist/src
$ npm publish
0.0.21

1 year ago

0.0.20

1 year ago

0.0.19

1 year ago

0.0.18

1 year ago

0.0.17

1 year ago

0.0.16

1 year ago

0.0.15

1 year ago

0.0.14

1 year ago

0.0.13

1 year ago

0.0.12

1 year ago

0.0.11

1 year ago

0.0.10

1 year ago

0.0.9

1 year ago

0.0.8

1 year ago

0.0.7

1 year ago

0.0.6

1 year ago

0.0.5

1 year ago

0.0.4

1 year ago

0.0.3

1 year ago

0.0.2

1 year ago