從您的應用程式碼發出自訂記錄訊息或事件通常很有用;無論您是要追蹤在背景中傳送的寄出電子郵件的狀態,或者只是在您的應用程式碼中尋找呼叫 console.log()
的可配置替代方案。
為了方便起見,Sails 將其內部記錄介面公開為 sails.log
。它的用法與 Node 的 console.log()
非常相似,但具有一些額外功能;也就是支援多個記錄層級,並具有彩色、帶前綴的控制台輸出。
請參閱 sails.log() 以獲取更多資訊和範例,或參閱 sails.config.log 以獲取配置選項。
以下每個記錄方法都接受無限數量的任何資料類型參數,以逗號分隔。與 console.log
類似,作為參數傳遞給 Sails 記錄器的資料會使用 Node 的 util.inspect()
自動美化以便於閱讀。因此,標準的 Node.js 慣例適用;任何字典、錯誤、日期、陣列或其他資料類型都會使用 util.inspect()
中的內建邏輯進行美化列印(例如,您會看到 { pet: { name: 'Hamlet' } }
而不是 [object Object]
。)此外,如果您記錄一個具有自訂 inspect()
方法的物件,記錄器將自動執行該方法並將其傳回的字串寫入控制台。
將記錄輸出以 "error" 記錄層級寫入 stderr
。適用於追蹤主要錯誤。
sails.log.error('Sending 500 ("Server Error") response.');
// -> error: Sending 500 ("Server Error") response.
將記錄輸出以 "warn" 記錄層級寫入 stderr
。適用於追蹤有關靜默失敗操作的資訊。
sails.log.warn('File upload quota exceeded for user #%d. Request aborted.', user.id);
// -> warn: File upload quota exceeded for user #94271. Request aborted.
又名 sails.log.debug()
預設記錄函數,它將控制台輸出以 "debug" 記錄層級寫入 stderr
。適用於在您的團隊中傳遞重要的技術資訊;或作為 console.log()
的通用替代方案。
sails.log('This endpoint (`POST /accounts`) will be deprecated in the next few days. Please use `POST /signup` instead. ');
// -> debug: This endpoint (`POST /accounts`) will be deprecated in the next few days. Please use `POST /signup` instead.
將記錄輸出以 "info" 記錄層級寫入 stdout
。適用於捕獲有關您的應用程式業務邏輯的資訊。
sails.log.info('A new user (', newUser.emailAddress, ') just signed up!');
// -> info: A new user ( [email protected] ) just signed up!
將記錄輸出以 "verbose" 記錄層級寫入 stdout
。適用於捕獲關於您的應用程式的詳細資訊,這些資訊您僅在極少數情況下需要。
sails.log.verbose('A user (IP adddress: `%s`) initiated an account transfer...', req.ip);
// -> verbose: A user (IP adddress: `10.48.1.191`) initiated an account transfer...
將記錄輸出以 "silly" 記錄層級寫入 stdout
。適用於捕獲關於您的應用程式的技術細節,這些細節僅對診斷和/或故障排除有用。
sails.log.silly(
'Successfully fetched Account record for requesting authenticated user (`%d`).',
'Took %dms.', req.param('id'), msElapsed);
// -> silly: Successfully fetched Account record for authenticated user (`49722`). Took 41ms.