<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
        主站蜘蛛池模板: 亚洲欧美成人综合久久久| 亚洲午夜未满十八勿入网站2| 成在人线av无码免费高潮喷水| 国产自产拍精品视频免费看| 亚洲夂夂婷婷色拍WW47| 黄色免费在线观看网址| 尤物永久免费AV无码网站| 亚洲av无码一区二区三区天堂| 成人免费在线视频| 亚洲国产区男人本色| 日韩高清免费观看| 精品在线观看免费| 亚洲精品免费在线| 亚洲精品永久www忘忧草| 亚洲综合免费视频| 亚洲综合激情五月色一区| 国产高清免费观看| 特级做a爰片毛片免费看| 啦啦啦完整版免费视频在线观看| 亚洲综合精品香蕉久久网97| 18禁成人网站免费观看| 亚洲a∨无码男人的天堂| 好大好深好猛好爽视频免费| 激情小说亚洲色图| 亚洲日韩v无码中文字幕| 最近免费最新高清中文字幕韩国| 亚洲免费观看网站| 全部免费国产潢色一级| 久久精品国产亚洲AV忘忧草18| 免费看美女被靠到爽| 成人免费网站视频www| 亚洲精品午夜无码电影网| 亚欧免费视频一区二区三区| 亚洲中文字幕AV每天更新| 亚洲国产香蕉人人爽成AV片久久| 精品在线免费观看| 亚洲熟女少妇一区二区| 99re免费视频| 美女黄频免费网站| 亚洲一区综合在线播放| 国产免费怕怕免费视频观看|