|
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216 |
- # npmlog
-
- The logger util that npm uses.
-
- This logger is very basic. It does the logging for npm. It supports
- custom levels and colored output.
-
- By default, logs are written to stderr. If you want to send log messages
- to outputs other than streams, then you can change the `log.stream`
- member, or you can just listen to the events that it emits, and do
- whatever you want with them.
-
- # Installation
-
- ```console
- npm install npmlog --save
- ```
-
- # Basic Usage
-
- ```javascript
- var log = require('npmlog')
-
- // additional stuff ---------------------------+
- // message ----------+ |
- // prefix ----+ | |
- // level -+ | | |
- // v v v v
- log.info('fyi', 'I have a kitty cat: %j', myKittyCat)
- ```
-
- ## log.level
-
- * {String}
-
- The level to display logs at. Any logs at or above this level will be
- displayed. The special level `silent` will prevent anything from being
- displayed ever.
-
- ## log.record
-
- * {Array}
-
- An array of all the log messages that have been entered.
-
- ## log.maxRecordSize
-
- * {Number}
-
- The maximum number of records to keep. If log.record gets bigger than
- 10% over this value, then it is sliced down to 90% of this value.
-
- The reason for the 10% window is so that it doesn't have to resize a
- large array on every log entry.
-
- ## log.prefixStyle
-
- * {Object}
-
- A style object that specifies how prefixes are styled. (See below)
-
- ## log.headingStyle
-
- * {Object}
-
- A style object that specifies how the heading is styled. (See below)
-
- ## log.heading
-
- * {String} Default: ""
-
- If set, a heading that is printed at the start of every line.
-
- ## log.stream
-
- * {Stream} Default: `process.stderr`
-
- The stream where output is written.
-
- ## log.enableColor()
-
- Force colors to be used on all messages, regardless of the output
- stream.
-
- ## log.disableColor()
-
- Disable colors on all messages.
-
- ## log.enableProgress()
-
- Enable the display of log activity spinner and progress bar
-
- ## log.disableProgress()
-
- Disable the display of a progress bar
-
- ## log.enableUnicode()
-
- Force the unicode theme to be used for the progress bar.
-
- ## log.disableUnicode()
-
- Disable the use of unicode in the progress bar.
-
- ## log.setGaugeTemplate(template)
-
- Set a template for outputting the progress bar. See the [gauge documentation] for details.
-
- [gauge documentation]: https://npmjs.com/package/gauge
-
- ## log.setGaugeThemeset(themes)
-
- Select a themeset to pick themes from for the progress bar. See the [gauge documentation] for details.
-
- ## log.pause()
-
- Stop emitting messages to the stream, but do not drop them.
-
- ## log.resume()
-
- Emit all buffered messages that were written while paused.
-
- ## log.log(level, prefix, message, ...)
-
- * `level` {String} The level to emit the message at
- * `prefix` {String} A string prefix. Set to "" to skip.
- * `message...` Arguments to `util.format`
-
- Emit a log message at the specified level.
-
- ## log\[level](prefix, message, ...)
-
- For example,
-
- * log.silly(prefix, message, ...)
- * log.verbose(prefix, message, ...)
- * log.info(prefix, message, ...)
- * log.http(prefix, message, ...)
- * log.warn(prefix, message, ...)
- * log.error(prefix, message, ...)
-
- Like `log.log(level, prefix, message, ...)`. In this way, each level is
- given a shorthand, so you can do `log.info(prefix, message)`.
-
- ## log.addLevel(level, n, style, disp)
-
- * `level` {String} Level indicator
- * `n` {Number} The numeric level
- * `style` {Object} Object with fg, bg, inverse, etc.
- * `disp` {String} Optional replacement for `level` in the output.
-
- Sets up a new level with a shorthand function and so forth.
-
- Note that if the number is `Infinity`, then setting the level to that
- will cause all log messages to be suppressed. If the number is
- `-Infinity`, then the only way to show it is to enable all log messages.
-
- ## log.newItem(name, todo, weight)
-
- * `name` {String} Optional; progress item name.
- * `todo` {Number} Optional; total amount of work to be done. Default 0.
- * `weight` {Number} Optional; the weight of this item relative to others. Default 1.
-
- This adds a new `are-we-there-yet` item tracker to the progress tracker. The
- object returned has the `log[level]` methods but is otherwise an
- `are-we-there-yet` `Tracker` object.
-
- ## log.newStream(name, todo, weight)
-
- This adds a new `are-we-there-yet` stream tracker to the progress tracker. The
- object returned has the `log[level]` methods but is otherwise an
- `are-we-there-yet` `TrackerStream` object.
-
- ## log.newGroup(name, weight)
-
- This adds a new `are-we-there-yet` tracker group to the progress tracker. The
- object returned has the `log[level]` methods but is otherwise an
- `are-we-there-yet` `TrackerGroup` object.
-
- # Events
-
- Events are all emitted with the message object.
-
- * `log` Emitted for all messages
- * `log.<level>` Emitted for all messages with the `<level>` level.
- * `<prefix>` Messages with prefixes also emit their prefix as an event.
-
- # Style Objects
-
- Style objects can have the following fields:
-
- * `fg` {String} Color for the foreground text
- * `bg` {String} Color for the background
- * `bold`, `inverse`, `underline` {Boolean} Set the associated property
- * `bell` {Boolean} Make a noise (This is pretty annoying, probably.)
-
- # Message Objects
-
- Every log event is emitted with a message object, and the `log.record`
- list contains all of them that have been created. They have the
- following fields:
-
- * `id` {Number}
- * `level` {String}
- * `prefix` {String}
- * `message` {String} Result of `util.format()`
- * `messageRaw` {Array} Arguments to `util.format()`
-
- # Blocking TTYs
-
- We use [`set-blocking`](https://npmjs.com/package/set-blocking) to set
- stderr and stdout blocking if they are tty's and have the setBlocking call.
- This is a work around for an issue in early versions of Node.js 6.x, which
- made stderr and stdout non-blocking on OSX. (They are always blocking
- Windows and were never blocking on Linux.) `npmlog` needs them to be blocking
- so that it can allow output to stdout and stderr to be interlaced.
|