以下這段 Node-RED 的 settings.js
設定 (寫在 logging 內) 是為了記錄節點編輯器的使用者登入和登出狀態。以下是程式碼的解釋:
// UserLogger
UserLogger: {
level: "info",
metrics: false,
audit: true,
handler: function (settings) {
const tzoffset = new Date().getTimezoneOffset() * 60000; // 計算台灣時區的偏移量
const timestamp = new Date(Date.now() - tzoffset).toISOString().slice(0, -1).replace("T", " "); // 取得格式為 yyyy-MM-dd-HH:mm:ss 的時間戳記
return function (msg) {
// 登入
if (msg.event === "auth.login") {
console.log(timestamp, "User logged in:", msg.username);
}
// 登出
if (msg.event === "auth.login.revoke") {
console.log(timestamp, "User logged out:", msg.user.username);
}
};
},
},
這個設定定義了一個名為 UserLogger
的物件,其中包含了以下屬性:
level: "info"
: 設定日誌的層級為 "info",這表示只記錄 info 級別及以上的日誌訊息。
metrics: false
: 關閉性能指標的記錄。
audit: true
: 開啟審計(audit)記錄,用於追蹤操作。
最重要的是 handler
函數,它接收一個 settings
參數,並返回一個處理日誌的函數。這個函數會在每次有相關事件發生時被呼叫。
在這個處理函數中:
tzoffset
計算了台灣時區的偏移量。
timestamp
使用當地時區的時間,以格式 yyyy-MM-dd-HH:mm:ss
取得時間戳記。
接著,這個處理函數檢查輸入的 msg
物件,根據事件的不同,使用 console.log
輸出相應的登入或登出訊息,包含時間戳記和使用者名稱。
簡單來說,這段程式碼的目的是在節點編輯器中記錄使用者的登入和登出事件,並在控制台上輸出相應的訊息。