# zlogger

> The last console logger

Latest version **2.1.1** (published 2023-08-17) · MIT license · 0 weekly downloads

## Install

```sh
npm install zlogger
pnpm add zlogger
yarn add zlogger
bun add zlogger
```

## Health

**Score 25/100 (F)** — status: abandoned.

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

Warnings: low downloads; no esm support.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 2.1.1 |
| Published | 2023-08-17 |
| First published | 2016-11-25 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | bundled |
| Module format | CommonJS |
| Node | >=8 |
| Dependencies | 3 |
| Unpacked size | 8.8 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 12 |
| Author | popomore |
| Maintainers | popomore |
| Keywords | logger, console, stream |

## Links

- npm: https://www.npmjs.com/package/zlogger
- Repository: https://github.com/node-modules/zlogger
- Issues: https://github.com/node-modules/zlogger/issues
- npm.io page: https://npm.io/package/zlogger

## Dependencies (3)

- [split2](https://npm.io/package/split2.md) ^3.1.0
- [pumpify](https://npm.io/package/pumpify.md) ^1.5.1
- [through2](https://npm.io/package/through2.md) ^3.0.0

## Alternatives

- [cli-color](https://npm.io/package/cli-color.md) — 3.4M weekly downloads
- [log](https://npm.io/package/log.md) — 1.3M weekly downloads
- [logstash-client](https://npm.io/package/logstash-client.md) — 4.5K weekly downloads
- [@nocobase/plugin-logger](https://npm.io/package/@nocobase/plugin-logger.md) — 2.0K weekly downloads
- [child-process-debug](https://npm.io/package/child-process-debug.md) — 695 weekly downloads

## Recent versions

- 2.1.1 (latest) — 2023-08-17
- 2.1.0 — 2019-02-18
- 2.0.0 — 2018-12-19
- 1.1.0 — 2016-12-13
- 1.0.0 — 2016-11-29
- 0.0.0 — 2016-11-25

## README

# zlogger

[![NPM version][npm-image]][npm-url]
[![build status][travis-image]][travis-url]
[![Test coverage][codecov-image]][codecov-url]
[![David deps][david-image]][david-url]
[![Known Vulnerabilities][snyk-image]][snyk-url]
[![npm download][download-image]][download-url]

[npm-image]: https://img.shields.io/npm/v/zlogger.svg?style=flat-square
[npm-url]: https://npmjs.org/package/zlogger
[travis-image]: https://img.shields.io/travis/node-modules/zlogger.svg?style=flat-square
[travis-url]: https://travis-ci.org/node-modules/zlogger
[codecov-image]: https://codecov.io/gh/node-modules/zlogger/branch/master/graph/badge.svg
[codecov-url]: https://codecov.io/gh/node-modules/zlogger
[david-image]: https://img.shields.io/david/node-modules/zlogger.svg?style=flat-square
[david-url]: https://david-dm.org/node-modules/zlogger
[snyk-image]: https://snyk.io/test/npm/zlogger/badge.svg?style=flat-square
[snyk-url]: https://snyk.io/test/npm/zlogger
[download-image]: https://img.shields.io/npm/dm/zlogger.svg?style=flat-square
[download-url]: https://npmjs.org/package/zlogger

The last console logger

## Installation

```bash
npm install --save zlogger
```

## Feature

- ✔︎ Extends [Console](https://nodejs.org/api/console.html#console_new_console_stdout_stderr)
- ✔︎ Support custom prefix before every line
- ✔︎ Support custom stdout and stderr
- ✔︎ Support print time
- ✔︎ Support child logger
- ✔︎ Support logger level

## Usage

zlogger is same as global `console` which has `.log`, `.info`, `.warn`, `.error`.

Every line will start with `prefix` that you customize.

```js
const logger = new ConsoleLogger({
  prefix: '> ',
});
```

Support log level: `DEBUG` / `INFO` / `WARN` / `ERROR`.

```js
const logger = new ConsoleLogger({
  prefix: '> ',
  level: 'WARN',
});

logger.error('msg_error');
logger.info('msg_info');

// [15:03:46] prefix > msg_error
```

Specify stdout/stderr, default is `process.stdout/process.stderr`, you can use `fs` if you want to print to file.

```js
const logger = new ConsoleLogger({
  stdout: fs.createWriteStream('stdout.log'),
  stderr: fs.createWriteStream('stderr.log'),
});
logger.info('info');
logger.error('error');

// cat stdout.log
// cat stderr.log
```

You can create a child logger, the first argument can be a ChildProcess or writable stream. If you give a prefix, it will print after prefix defined by the parent logger.

```js
const cp = require('child_process');
const logger = new ConsoleLogger({
  prefix: 'prefix > ',
});
logger.info('see directory')

const ls = cp.spawn('ls', { cwd: __dirname });
logger.child(ls, '> ');

// [15:03:46] prefix > see directory
// [15:03:46] prefix > > History.md
// [15:03:46] prefix > > README.md
// [15:03:46] prefix > > index.js
// [15:03:46] prefix > > node_modules
// [15:03:46] prefix > > package.json
// [15:03:46] prefix > > test
```

`.child` will return a new logger.

```js
const logger = new ConsoleLogger({
  prefix: 'parent> ',
});
logger.info('parent');

const child = logger.child('child> ');
child.info('child');

// [15:02:43] parent> parent
// [15:02:43] parent> child> child
```

It will print time before prefix, format is `[HH:MM:SS] `, but you can disable it.

## Options

- {WriteStream} stdout - stdout, `.log` and `.info` will pipe to it，default is process.stdout
- {WriteStream} stderr - stderr, `.warn` and `.error` will pipe to it，default is process.stderr
- {String|Function} prefix - every line will start with `prefix`, if it's a function, it will be called every line print.
- {Boolean} time - print time
- {String|Number} level - log level

## License

(The MIT License)

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