# @lido-nestjs/logger

> NestJS Logger for Lido Finance projects. Part of [Lido NestJS Modules](https://github.com/lidofinance/lido-nestjs-modules/#readme)

Latest version **1.3.2** (published 2023-04-27) · MIT license · 0 weekly downloads

## Install

```sh
npm install @lido-nestjs/logger
pnpm add @lido-nestjs/logger
yarn add @lido-nestjs/logger
bun add @lido-nestjs/logger
```

## Health

**Score 35/100 (D)** — status: abandoned.

Positive: has types; no vulnerabilities; high maintenance score.

Warnings: low downloads; no esm support.

Negative: abandoned.

## Facts

| | |
|---|---|
| Version | 1.3.2 |
| Published | 2023-04-27 |
| First published | 2022-01-14 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | bundled |
| Module format | CommonJS |
| Dependencies | 3 |
| Unpacked size | 19.7 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 6 |
| Maintainers | mst, george-avs |
| Keywords | lido, lido-nestjs, lido-nestjs-modules, lidofinance |

## Links

- npm: https://www.npmjs.com/package/@lido-nestjs/logger
- Repository: https://github.com/lidofinance/lido-nestjs-modules
- Issues: https://github.com/lidofinance/lido-nestjs-modules/issues
- npm.io page: https://npm.io/package/@lido-nestjs/logger

## Dependencies (3)

- [winston](https://npm.io/package/winston.md) ^3.4.0
- [traverse](https://npm.io/package/traverse.md) ^0.6.7
- [nest-winston](https://npm.io/package/nest-winston.md) ^1.6.2

## Alternatives

- [@sindresorhus/slugify](https://npm.io/package/@sindresorhus/slugify.md) — 3.7M weekly downloads
- [solid-js](https://npm.io/package/solid-js.md) — 2.7M weekly downloads
- [expo-glass-effect](https://npm.io/package/expo-glass-effect.md) — 2.5M weekly downloads
- [nanoassert](https://npm.io/package/nanoassert.md) — 780.8K weekly downloads
- [@ffmpeg/ffmpeg](https://npm.io/package/@ffmpeg/ffmpeg.md) — 529.5K weekly downloads

## Recent versions

- 1.3.2 (latest) — 2023-04-27
- 1.3.1 — 2023-02-28
- 1.3.0 — 2022-11-16
- 1.2.1 — 2022-08-04
- 1.2.0 — 2022-07-12
- 1.1.0 — 2022-02-21
- 1.0.3 — 2022-01-28
- 1.0.2 — 2022-01-21
- 1.0.1 — 2022-01-14
- 1.0.0 — 2022-01-14

## README

# Logger

NestJS Logger for Lido Finance projects.
Part of [Lido NestJS Modules](https://github.com/lidofinance/lido-nestjs-modules/#readme)

The logger is based on [winston logger](https://github.com/winstonjs/winston) and [nest-winston](https://www.npmjs.com/package/nest-winston) package.

## Install

```bash
yarn add @lido-nestjs/logger
```

## Usage

### Basic usage

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

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

### Async usage

```ts
import { Module } from '@nestjs/common';
import { LoggerModule, jsonTransport } from '@lido-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 `@lido-nestjs/logger`:

```ts
import { simpleTransport, jsonTransport } from '@lido-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:

```ts
import { Module } from '@nestjs/common';
import { LoggerModule, simpleTransport } from '@lido-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 `@lido-nestjs/logger`:

```ts
import { cleanSecrets } from '@lido-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:

```ts
import { Module } from '@nestjs/common';
import { LoggerModule, jsonTransport } from '@lido-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:

```ts
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:

```ts
import { Module } from '@nestjs/common';
import { LoggerModule, simpleTransport } from '@lido-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:

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

Possible color values can be found in the [winston docs](https://github.com/winstonjs/winston#using-custom-logging-levels).

---
_Source: https://npm.io/package/@lido-nestjs/logger · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
