<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問(wèn)答1問(wèn)答10問(wèn)答100問(wèn)答1000問(wèn)答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
        問(wèn)答文章1 問(wèn)答文章501 問(wèn)答文章1001 問(wèn)答文章1501 問(wèn)答文章2001 問(wèn)答文章2501 問(wèn)答文章3001 問(wèn)答文章3501 問(wèn)答文章4001 問(wèn)答文章4501 問(wèn)答文章5001 問(wèn)答文章5501 問(wèn)答文章6001 問(wèn)答文章6501 問(wèn)答文章7001 問(wèn)答文章7501 問(wèn)答文章8001 問(wèn)答文章8501 問(wèn)答文章9001 問(wèn)答文章9501
        當(dāng)前位置: 首頁(yè) - 科技 - 知識(shí)百科 - 正文

        nodejs 日志模塊winston的使用方法

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

        nodejs 日志模塊winston的使用方法

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

        winston 日志模塊

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

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

        express-winston

        是 express-winston 的 winston 的增加版, 是作為 express 的中間件來(lái)打印日志,不僅有請(qǐng)求頭信息,并且有響應(yīng)時(shí)間。
        作為中間件, 為什么會(huì)有響應(yīng)時(shí)間呢? 因?yàn)?express-winston 改寫了 express 的 res.end 辦法, 是請(qǐng)求結(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 沒(méi)有修改或者擴(kuò)展 winston 的transport, 而 winston-daily-rotate-file 正是增強(qiáng)了 winston 的transport 辦法

        winston-daily-rotate-file

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

        結(jié)合使用

        我們來(lái)一個(gè)需求: 如何讓 express-winston 打印日志的時(shí)候,也打印出接口 /api 的請(qǐng)求參數(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 出來(lái)后才能捕獲到,express 所有的請(qǐng)求響應(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) {
         // 只打印頁(yè)面請(qǐng)求信息
         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)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問(wèn)題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        nodejs 日志模塊winston的使用方法

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

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 特级做A爰片毛片免费69| 男女午夜24式免费视频| 成年女人毛片免费观看97| 亚洲白嫩在线观看| 久久免费看黄a级毛片| 亚洲天天在线日亚洲洲精| 222www免费视频| 亚洲中文字幕久在线| 成人性生活免费视频| 亚洲中文字幕无码av永久| 午夜a级成人免费毛片| 亚洲精品国产高清在线观看| 免费无码不卡视频在线观看| 精品亚洲成A人在线观看青青| 免费一级e一片在线播放| 无码精品人妻一区二区三区免费| 亚洲综合区小说区激情区 | 亚洲精华国产精华精华液| 真实乱视频国产免费观看| 国产精品亚洲综合天堂夜夜| 亚洲一级特黄大片无码毛片| a在线视频免费观看| 久久亚洲精品无码aⅴ大香| 成人免费看吃奶视频网站| 牛牛在线精品免费视频观看| 久久亚洲国产欧洲精品一| 久草视频在线免费| 国产精品亚洲专区无码不卡| 亚洲精品无码久久一线| 美丽的姑娘免费观看在线播放| 亚洲综合一区无码精品| 国产亚洲精品成人a v小说| 亚洲成年人免费网站| 亚洲av日韩综合一区二区三区| 国产亚洲日韩在线三区| 91成人免费在线视频| 免费视频成人国产精品网站 | 亚洲乱码一二三四区国产| 日韩精品成人亚洲专区| 99re视频精品全部免费| 亚洲精华国产精华精华液|