0.0.21 • Published 1 year ago
nestjs-sensitive-logger v0.0.21
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)
Field | Masking Strategy |
---|---|
password | StrategyType.PASSWORD |
StrategyType.EMAIL | |
firstname | StrategyType.NAME |
surname | StrategyType.NAME |
phone | StrategyType.PHONE |
pan | StrategyType.PAN |
cvv | StrategyType.EACH |
identityno | StrategyType.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