Heim > Artikel > Web-Frontend > Zusammenfassung der Verwendung des NodeJS-Protokollmoduls Winston
Dieses Mal werde ich Ihnen eine Zusammenfassung der Verwendung des NodeJS-Protokollmoduls Winston geben. Was sind die Vorsichtsmaßnahmen bei der Verwendung des NodeJS-Protokollmoduls Winston? .
Winston-Protokollmodul
Wenn Sie das NodeJS-Winston-Modul und die beiden zugehörigen Module verwenden, können Sie mit halbem Aufwand das Doppelte des Ergebnisses erzielen.Express -winston
ist eine erweiterte Version von Express-Winston. Es wird alsMiddleware von Express zum Drucken von Protokollen verwendet, nicht nur mit Anforderungsheaderinformationen, sondern auch mit Antwortzeit. Warum gibt es als Middleware eine Reaktionszeit? Da express-winston die res.end-Methode von express neu schreibt, wird das Protokoll nach Abschluss der Anforderung generiert.
var end = res.end; res.end = function(chunk, encoding) { res.responseTime = (new Date) - req._startTime; res.end = end; res.end(chunk, encoding); ... }express-winston ändert oder erweitert den Transport von Winston nicht, und winston-daily-rotate-file verbessert lediglich die Transportmethode von Winston
winston- daily-rotate-file
winston-daily-rotate-file ist eine Erweiterung von Winston, die eine Transportmethode hinzufügt, um Winston die Möglichkeit zu geben, Protokolle zu rollen.In Verbindung mit
haben wir eine Anforderung: Wie kann express-winston das Protokoll drucken und auch dieAnforderungsparameter der Schnittstelle ausdrucken? /api und Antwortdaten?
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) }Ich glaube, Sie haben es gemeistert Nachdem Sie den Fall in diesem Artikel gelesen haben, erfahren Sie mehr über die Methode. Wie aufregend, achten Sie bitte auf andere verwandte Artikel auf der chinesischen PHP-Website! Empfohlene Lektüre:
Detaillierte Erläuterung der Schritte zur Steuerung von Routing-Berechtigungen mit React Router4+Redux
Detaillierte Erläuterung von die Vor- und Nachteile der Verwendung von Webpack Path und publicPath
Das obige ist der detaillierte Inhalt vonZusammenfassung der Verwendung des NodeJS-Protokollmoduls Winston. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!