npm 使用的记录器 util。
这个记录器非常基本。它为 npm 进行日志记录。它支持自定义级别和彩色输出。
默认情况下,日志写入 stderr。如果您想将日志消息发送到流以外的输出,那么您可以更改log.stream
成员,或者您可以只侦听它发出的事件,并对它们执行任何您想要的操作。
npm install npmlog --save
var log = require ( 'npmlog' )
// additional stuff ---------------------------+
// message ----------+ |
// prefix ----+ | |
// level -+ | | |
// v v v v
log . info ( 'fyi' , 'I have a kitty cat: %j' , myKittyCat )
显示日志的级别。任何处于或高于此级别的日志都会显示。特殊级别的silent
将阻止任何内容显示。
已输入的所有日志消息的数组。
要保留的最大记录数。如果 log.record 超过该值的 10%,则它会被分割为该值的 90%。
10% 窗口的原因是它不必在每个日志条目上调整大型数组的大小。
指定前缀样式的样式对象。 (见下文)
指定标题样式的样式对象。 (见下文)
如果设置,则在每行开头打印标题。
process.stderr
写入输出的流。
强制在所有消息上使用颜色,无论输出流如何。
禁用所有消息的颜色。
启用日志活动微调器和进度条的显示
禁用进度条的显示
强制进度条使用 unicode 主题。
禁止在进度条中使用 unicode。
设置输出进度条的模板。有关详细信息,请参阅仪表文档。
选择一个主题集以从中挑选进度条的主题。有关详细信息,请参阅仪表文档。
停止向流发送消息,但不要丢弃它们。
发出暂停时写入的所有缓冲消息。
level
{String} 发出消息的级别prefix
{String} 字符串前缀。设置为“”以跳过。message...
util.format
的参数在指定级别发出日志消息。
例如,
像log.log(level, prefix, message, ...)
。这样,每个级别都会有一个简写,因此您可以执行log.info(prefix, message)
。
level
{String} 级别指示器n
{Number} 数字级别style
{Object} 具有 fg、bg、inverse 等的对象。disp
{String} 输出中level
的可选替换。使用速记功能等设置新级别。
请注意,如果数字为Infinity
,则将级别设置为该值将导致所有日志消息被抑制。如果数字是-Infinity
,那么显示它的唯一方法是启用所有日志消息。
name
{String} 可选;进度项名称。todo
{Number} 可选;需要完成的工作总量。默认 0。weight
{Number} 可选;该物品相对于其他物品的重量。默认 1。这会向进度跟踪器添加一个新的are-we-there-yet
项目跟踪器。返回的对象具有log[level]
方法,但在其他方面是一个are-we-there-yet
Tracker
对象。
这会向进度跟踪器添加一个新的are-we-there-yet
流跟踪器。返回的对象具有log[level]
方法,但在其他方面是一个are-we-there-yet
TrackerStream
对象。
这会向进度跟踪器添加一个新的are-we-there-yet
跟踪器组。返回的对象具有log[level]
方法,但在其他方面是一个are-we-there-yet
TrackerGroup
对象。
事件都是通过消息对象发出的。
log
log.
为具有
级别的所有消息发出。
带有前缀的消息也会将其前缀作为事件发出。样式对象可以具有以下字段:
fg
{String} 前景文本的颜色bg
{String} 背景颜色bold
, inverse
, underline
{Boolean} 设置关联属性bell
{Boolean} 发出声音(这可能很烦人。)每个日志事件都会发出一个消息对象, log.record
列表包含所有已创建的事件。他们有以下字段:
id
{数字}level
{字符串}prefix
{字符串}message
{String} util.format()
的结果messageRaw
{Array} util.format()
的参数我们使用set-blocking
来设置 stderr 和 stdout 阻塞(如果它们是 tty 的并且有 setBlocking 调用)。这是针对 Node.js 6.x 早期版本中的一个问题的解决方案,该问题导致 OSX 上的 stderr 和 stdout 非阻塞。 (它们总是阻塞 Windows,而在 Linux 上从不阻塞。) npmlog
需要它们阻塞,以便它可以允许输出到 stdout 和 stderr 进行交错。