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 進行交錯。