Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

@catalist-nestjs/logger

Package Overview
Dependencies
Maintainers
1
Versions
9
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@catalist-nestjs/logger

NestJS Logger for Catalist Finance projects. Part of [Catalist NestJS Modules](https://github.com/blockarchivelabs/catalist-nestjs-modules/#readme)

  • 1.0.0
  • latest
  • Source
  • npm
  • Socket score

Version published
Maintainers
1
Created
Source

Logger

NestJS Logger for Catalist Finance projects. Part of Catalist NestJS Modules

The logger is based on winston logger and nest-winston package.

Install

yarn add @catalist-nestjs/logger

Usage

Basic usage

import { Module } from '@nestjs/common';
import { LoggerModule, jsonTransport } from '@catalist-nestjs/logger';

@Module({
  imports: [
    LoggerModule.forRoot({
      level: 'debug',
      transports: [jsonTransport()],
    }),
  ],
})
export class AppModule {}

Async usage

import { Module } from '@nestjs/common';
import { LoggerModule, jsonTransport } from '@catalist-nestjs/logger';
import { ConfigModule, ConfigService } from './example';

@Module({
  imports: [
    LoggerModule.forRootAsync({
      imports: [ConfigModule],
      inject: [ConfigService],
      useFactory: async (configService: ConfigService) => ({
        level: configService.get('LOG_LEVEL'),
        transports: [jsonTransport()],
      }),
    }),
  ],
})
export class AppModule {}

Transports

The logger provides preconfigured console transports in json and simple formats. The transports can be imported from @catalist-nestjs/logger:

import { simpleTransport, jsonTransport } from '@catalist-nestjs/logger';

Secrets cleaner

Preconfigured transports have formatter for clean secrets from logs. To use it, pass an array of secret strings to the transport options:

import { Module } from '@nestjs/common';
import { LoggerModule, simpleTransport } from '@catalist-nestjs/logger';

const PRIVATE_KEY = '0x000000000000';
const secrets = [PRIVATE_KEY];

@Module({
  imports: [
    LoggerModule.forRoot({
      level: 'debug',
      transports: [simpleTransport({ secrets })],
    }),
  ],
})
export class AppModule {}

Secrets will be replaced with text <removed>.

If you want to use this formatter in your custom transport, import the cleanSecrets from @catalist-nestjs/logger:

import { cleanSecrets } from '@catalist-nestjs/logger';

const myFormatter = winston.format.combine(
  cleanSecrets({ secrets: ['some-secret'] }),
  winston.format.json(),
);

const myTransport = new winston.transports.Console({
  format: myFormatter,
});

Meta fields

Meta fields can be useful for adding additional fields to logs, such as blockNumber in Ethereum bots. To add meta fields, pass a defaultMeta to logger options:

import { Module } from '@nestjs/common';
import { LoggerModule, jsonTransport } from '@catalist-nestjs/logger';

@Module({
  imports: [
    LoggerModule.forRoot({
      level: 'debug',
      defaultMeta: {
        foo: 'bar',
        get baz() {
          // you can use getter for dynamic data
          return 1 + 1;
        },
      },
      transports: [jsonTransport()],
    }),
  ],
})
export class AppModule {}

In this case you will see extra fields in the logs:

logger.log('some message'); // { foo: 'bar', baz: 2, message: 'some message', ... }

Colorize

For simple transport you can set colors for meta fields by passing fieldColors in the transport options:

import { Module } from '@nestjs/common';
import { LoggerModule, simpleTransport } from '@catalist-nestjs/logger';

const fieldColors = { foo: 'blue' };

@Module({
  imports: [
    LoggerModule.forRoot({
      level: 'debug',
      defaultMeta: {
        get block() {
          return 1000;
        },
      },
      transports: [simpleTransport({ fieldColors })],
    }),
  ],
})
export class AppModule {}

In this case you will see blue value of block field in the logs:

logger.log('some message'); // yyyy-mm-dd hh:mm:ss [1000] info: some message

Possible color values can be found in the winston docs.

Keywords

FAQs

Package last updated on 30 Apr 2024

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

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