nodejs 日誌模組 winston 的使用

2021-09-13 18:58:03 字數 2217 閱讀 7701

在使用 nodejs winston 模組中,加上相關的兩個模組,事倍功半。

是 express-winston 的 winston 的增加版, 是作為 express 的中介軟體來列印日誌,不僅有請求頭資訊,並且有響應時間。

作為中介軟體, 為什麼會有響應時間呢? 因為 express-winston 改寫了 express 的 res.end 辦法, 是請求結束後再打的日誌。

**片段

var end = res.end;

res.end = function(chunk, encoding)

express-winston 沒有修改或者擴充套件 winston 的transport, 而 winston-daily-rotate-file 正是增強了 winston 的transport 辦法

winston-daily-rotate-file 是 winston 擴充套件, 增加了 transport 的辦法,使 winston 有滾動日誌的能力。

我們來乙個需求: 如何讓 express-winston 列印日誌的時候,也列印出介面 /api 的請求引數和響應資料?

要獲取到響應資料, 就要在業務處理完後 send 出來後才能捕獲到,express 所有的請求響應最後都是走 res.send 我們可以從這裡入手捕獲響應資料

**如下

import winston from 'winston'

import expresswinston from 'express-winston'

import 'winston-daily-rotate-file'

import path from 'path'

export let dailyrotatefiletransport = (filename) => -%date%.log`),

datepattern: 'yyyy-mm-dd-hh',

// maxsize: '20m',

maxfiles: '7d',

timestamp: () => new date().format('yyyy-mm-dd hh:mm:ss.s')

})}export let pagerequestlogger = expresswinston.logger(} }', // optional: customize the default logging message. e.g. "} } }ms }"

expressformat: true, // use the default express/morgan request formatting. enabling this will override any msg if true. will only output colors with colorize set to true

colorize: false, // color the text and status code, using the express/morgan color palette (text: gray, status: default green, 3xx cyan, 4xx yellow, 5xx red).

ignoreroute: function (req, res) )

return notpagerequest

} // optional: allows to skip some log messages based on request and/or response

})export let apirequestlogger = (req, res, next) =>

let body = req.body || {}

res.send = function ()

expresswinston.logger( $ query $ body $ resdata $ `

},colorize: true, // color the text and status code, using the express/morgan color palette (text: gray, status: default green, 3xx cyan, 4xx yellow, 5xx red).

ignoreroute: function (req, res) // optional: allows to skip some log messages based on request and/or response

})(req, res, next)

}

nodejs實踐錄 簡單的log日誌模組

本文封裝乙個簡單的日誌模組,提供時間戳和日誌等級。比較簡單,直接上 var fs require fs todo 等級由外部傳入,或是巨集定義,或是設定引數 const l debug 3 const l info 2 const l warn 1 const l err 0 var g level...

nodejs模組 http模組

處理url請求 var fs require fs 主頁function home res res.write content res.end about.html 關於頁面 function about res res.write content res.end 匯出頁面處理函式 exports....

nodejs 模組系統

模組系統分為原生系統跟檔案系統,他們的呼叫優先順序為 檔案系統快取區 原生系統 原生系統快取區 檔案系統 1.原生系統 http,path,fs 等 2.載入檔案系統時還可以指定自定義檔案 hello 或者 root node hello 路徑載入 3.mod 非原生系統的檔案系統 node.js ...