# egg-logger

> egg logger

Latest version **3.6.1** (published 2024-12-22) · MIT license · 0 weekly downloads

## Install

```sh
npm install egg-logger
pnpm add egg-logger
yarn add egg-logger
bun add egg-logger
```

## Health

**Score 40/100 (D)** — status: maintenance-mode.

Positive: has types; no vulnerabilities; has provenance; high quality score.

Warnings: low downloads; no esm support.

Negative: stale; low maintenance score.

## Facts

| | |
|---|---|
| Version | 3.6.1 |
| Published | 2024-12-22 |
| First published | 2016-05-26 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | bundled |
| Module format | CommonJS |
| Node | >=14.17.0 |
| Dependencies | 6 |
| Unpacked size | 49.9 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| Provenance | attested (GitHub Actions) |
| GitHub stars | 151 |
| Author | fengmk2 |
| Maintainers | gxkl, eggjs-admin, fengmk2, atian25, dead_horse, wanghx, hyj1991, killagu, coolme200, mansonchor.zzw, hubcarl, gemwuu, akitasummer, popomore |

## Links

- npm: https://www.npmjs.com/package/egg-logger
- Repository: https://github.com/eggjs/egg-logger
- Issues: https://github.com/eggjs/egg-logger/issues
- npm.io page: https://npm.io/package/egg-logger

## Dependencies (6)

- [depd](https://npm.io/package/depd.md) ^2.0.0
- [chalk](https://npm.io/package/chalk.md) ^4.1.2
- [utility](https://npm.io/package/utility.md) ^2.1.0
- [egg-errors](https://npm.io/package/egg-errors.md) ^2.3.1
- [iconv-lite](https://npm.io/package/iconv-lite.md) ^0.6.3
- [circular-json-for-egg](https://npm.io/package/circular-json-for-egg.md) ^1.0.0

## Recent versions

- 3.6.1 (latest) — 2024-12-22
- 1.8.0 (latest-1) — 2019-05-07
- 3.6.0 — 2024-11-30
- 3.5.0 — 2024-05-08
- 3.4.2 — 2023-12-31
- 3.4.1 — 2023-10-16
- 3.4.0 — 2023-09-05
- 3.3.1 — 2023-06-05
- 3.3.0 — 2023-03-03
- 3.2.1 — 2023-01-20
- 3.2.0 — 2023-01-19
- 3.1.1 — 2023-01-13
- 3.1.0 — 2023-01-12
- 3.0.1 — 2022-12-10
- 3.0.0 — 2022-12-10
- … 37 more at https://npm.io/package/egg-logger/versions

## README

# egg-logger

[![NPM version][npm-image]][npm-url]
[![CI](https://github.com/eggjs/egg-logger/actions/workflows/nodejs.yml/badge.svg)](https://github.com/eggjs/egg-logger/actions/workflows/nodejs.yml)
[![Test coverage][codecov-image]][codecov-url]
[![Known Vulnerabilities][snyk-image]][snyk-url]
[![npm download][download-image]][download-url]
[![Node.js Version](https://img.shields.io/node/v/egg-logger.svg?style=flat)](https://nodejs.org/en/download/)

[npm-image]: https://img.shields.io/npm/v/egg-logger.svg?style=flat-square
[npm-url]: https://npmjs.org/package/egg-logger
[codecov-image]: https://codecov.io/github/eggjs/egg-logger/coverage.svg?branch=master
[codecov-url]: https://codecov.io/github/eggjs/egg-logger?branch=master
[snyk-image]: https://snyk.io/test/npm/egg-logger/badge.svg?style=flat-square
[snyk-url]: https://snyk.io/test/npm/egg-logger
[download-image]: https://img.shields.io/npm/dm/egg-logger.svg?style=flat-square
[download-url]: https://npmjs.org/package/egg-logger

Egg logger.

![diagram](diagram.png)

Including two base class, `Logger` and `Transport`:

- Transport: Save log to file, stdout/stderr and network.
- Logger: A logger can contains multi transports.

---

## Install

```bash
$ npm i egg-logger
```

## Usage

Create a `Logger` and add a file `Transport`.

```js
const Logger = require('egg-logger').Logger;
const FileTransport = require('egg-logger').FileTransport;
const ConsoleTransport = require('egg-logger').ConsoleTransport;

const logger = new Logger();
logger.set('file', new FileTransport({
  file: '/path/to/file',
  level: 'INFO',
}));
logger.set('console', new ConsoleTransport({
  level: 'DEBUG',
}));
logger.debug('debug foo'); // only output to stdout
logger.info('info foo');
logger.warn('warn foo');
logger.error(new Error('error foo'));
```

### Enable / Disable Transport

```js
logger.disable('file');
logger.info('info'); // output nothing
logger.enable('file');
logger.info('info'); // output 'info' string
```

### Duplicate

Duplicate error log to other logger.

Accept an `options.excludes` to special whether excludes some tranports.

```js
logger.duplicate('error', errorLogger, { excludes: [ 'console' ]});
logger.error(new Error('print to errorLogger')); // will additional call `errorLogger.error`
```

### Redirect

Redirect special level log to other logger.

```js
oneLogger.redirect('debug', debugLogger); // all debug level logs of `oneLogger` will delegate to debugLogger
```

### Reload

```js
logger.reload(); // will close the exists write stream and create a new one.
```

### Custom Transport

You can make your own `Transport` for logging，e.g.: send log to your logging server.

```js
const urllib = require('urllib');
const Transport = require('egg-logger').Transport;

class UrllibTransport extends Transport {

  log(level, args, meta) {
    const msg = super.log(level, args, meta);
    return urllib.request('url?msg=' + msg);
  }
}

const logger = new Logger();
logger.set('remote', new UrllibTransport({
  level: 'DEBUG',
}));
logger.info('info');
```

## Console logger level

set environment NODE_CONSOLE_LOGGRE_LEVEL = 'INFO' | 'WARN' | 'ERROR'

## License

[MIT](LICENSE)

## Contributors

[![Contributors](https://contrib.rocks/image?repo=eggjs/egg-logger)](https://github.com/eggjs/egg-logger/graphs/contributors)

Made with [contributors-img](https://contrib.rocks).

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