国产99久久精品_欧美日本韩国一区二区_激情小说综合网_欧美一级二级视频_午夜av电影_日本久久精品视频

最新文章專題視頻專題問答1問答10問答100問答1000問答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專題關(guān)鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
當(dāng)前位置: 首頁 - 科技 - 知識百科 - 正文

nodejs 日志模塊winston的使用方法

來源:懂視網(wǎng) 責(zé)編:小采 時間:2020-11-27 22:15:46
文檔

nodejs 日志模塊winston的使用方法

nodejs 日志模塊winston的使用方法:winston 日志模塊 在使用 nodejs winston 模塊中,加上相關(guān)的兩個模塊,事倍功半。 express-winston winston-daily-rotate-file express-winston 是 express-winston 的 winston 的增加版, 是作為 express 的中間件來打
推薦度:
導(dǎo)讀nodejs 日志模塊winston的使用方法:winston 日志模塊 在使用 nodejs winston 模塊中,加上相關(guān)的兩個模塊,事倍功半。 express-winston winston-daily-rotate-file express-winston 是 express-winston 的 winston 的增加版, 是作為 express 的中間件來打

winston 日志模塊

在使用 nodejs winston 模塊中,加上相關(guān)的兩個模塊,事倍功半。

  1. express-winston
  2. winston-daily-rotate-file

express-winston

是 express-winston 的 winston 的增加版, 是作為 express 的中間件來打印日志,不僅有請求頭信息,并且有響應(yīng)時間。
作為中間件, 為什么會有響應(yīng)時間呢? 因?yàn)?express-winston 改寫了 express 的 res.end 辦法, 是請求結(jié)束后再打的日志。

代碼片段

var end = res.end;
res.end = function(chunk, encoding) {
 res.responseTime = (new Date) - req._startTime;
 res.end = end;
 res.end(chunk, encoding);
 ...
 }

express-winston 沒有修改或者擴(kuò)展 winston 的transport, 而 winston-daily-rotate-file 正是增強(qiáng)了 winston 的transport 辦法

winston-daily-rotate-file

winston-daily-rotate-file 是 winston 擴(kuò)展, 增加了 transport 的辦法,使 winston 有滾動日志的能力。

結(jié)合使用

我們來一個需求: 如何讓 express-winston 打印日志的時候,也打印出接口 /api 的請求參數(shù)和響應(yīng)數(shù)據(jù)?

  1. 該日志中間件應(yīng)該在調(diào)用鏈 api 后面, api/* 業(yè)務(wù)處理之前。 like: app.use('/api', apiRequestLogger, apiHandler)
  2. 要獲取到響應(yīng)數(shù)據(jù), 就要在業(yè)務(wù)處理完后 send 出來后才能捕獲到,express 所有的請求響應(yīng)最后都是走 res.send 我們可以從這里入手捕獲響應(yīng)數(shù)據(jù)

代碼如下

import winston from 'winston'
import expressWinston from 'express-winston'
import 'winston-daily-rotate-file'
import path from 'path'

export let DailyRotateFileTransport = (fileName) => {
 return new (winston.transports.DailyRotateFile)({
 filename: path.join(process.env.LOGPATH, `${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({
 transports: [
 DailyRotateFileTransport('page-request')
 ],
 meta: true, // optional: control whether you want to log the meta data about the request (default to true)
 msg: 'HTTP {{req.method}} {{req.url}}', // optional: customize the default logging message. E.g. "{{res.statusCode}} {{req.method}} {{res.responseTime}}ms {{req.url}}"
 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) {
 // 只打印頁面請求信息
 let notPageRequest = false
 let ignoreArr = ['/api', '.js', '.css', '.png', '.jpg', '.gif']
 ignoreArr.forEach(item => {
 if (req.url.indexOf(item) > -1) notPageRequest = true
 })
 return notPageRequest
 } // optional: allows to skip some log messages based on request and/or response
})

export let apiRequestLogger = (req, res, next) => {
 let send = res.send
 let content = ''
 let query = req.query || {}
 let body = req.body || {}
 res.send = function () {
 content = arguments[0]
 send.apply(res, arguments)
 }
 expressWinston.logger({
 transports: [
 DailyRotateFileTransport('api-request')
 ],
 meta: true, // optional: control whether you want to log the meta data about the request (default to true)
 msg () {
 return `HTTP ${req.method} ${req.url} query ${JSON.stringify(query)} body ${JSON.stringify(body)} resData ${content} `
 },
 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) {
 if (req.headers.self) return true
 return false
 } // optional: allows to skip some log messages based on request and/or response
 })(req, res, next)
}

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文檔

nodejs 日志模塊winston的使用方法

nodejs 日志模塊winston的使用方法:winston 日志模塊 在使用 nodejs winston 模塊中,加上相關(guān)的兩個模塊,事倍功半。 express-winston winston-daily-rotate-file express-winston 是 express-winston 的 winston 的增加版, 是作為 express 的中間件來打
推薦度:
標(biāo)簽: 使用 使用方法 日志
  • 熱門焦點(diǎn)

最新推薦

猜你喜歡

熱門推薦

專題
Top
主站蜘蛛池模板: 日韩不卡一区二区 | 在线免费观看国产视频 | 久久一区二区三区免费 | 欧美三级自拍 | 久久精品综合国产二区 | 欧美日韩一本 | 免费一级a毛片在线播 | h片在线看 | 国产视频二区 | 美日韩免费视频 | 国产不卡视频在线观看 | 日本福利片国产午夜久久 | 免费一级a毛片在线播放直播 | 国产一区二区三区成人久久片 | 日本一区二区三区免费观看 | 欧美日韩1区 | 全部费免一级毛片不收费 | 精品视频免费看 | 欧美激情伊人 | 成人特黄午夜性a一级毛片 成人国产一区二区三区精品 | 国产网站在线免费观看 | 亚洲精品在线免费看 | 精品欧美一区二区三区在线 | 综合欧美亚洲 | 青青成人福利国产在线视频 | 一区二区在线观看视频 | 国产高清一级在线观看 | 国产乱了真实在线观看 | 亚洲精品在线视频 | 国产99久久亚洲综合精品 | 日韩欧美高清 | 中文字幕精品一区二区精品 | 91精品国产高清久久久久久91 | 国产亚洲精品一品区99热 | 精品一区二区三区免费毛片爱 | 久久久久久久岛国免费播放 | 国产欧美精品 | 国产日产精品_国产精品毛片 | 日韩欧美网址 | 精品一二三区 | 天天做天天爱夜夜爽毛片毛片 |