# 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 ``` 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 ## 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: '> ', }); ``` 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. ## 参数 - {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 ## License (The MIT License)