Express的日誌模塊morgan
阿新 • • 發佈:2018-01-31
path join 默認 director amp rbo asc rect mat
morgan 是nodejs的一個日誌模塊,由 express 團隊維護。
這裏通過示例簡要介紹morgan模塊在express中的應用,大部分示例直接來自於。
morgan的文檔:https://github.com/expressjs/morgan
1). 用法及參數
1.首先需要安裝morgan模塊:
npm install morgan --save
2.morgan的API:
morgan(format, options);
其中 format 表示日誌的格式, morgan預定義了一些日誌格式,用常量字符串表示,如’combined’, ‘common’, ‘short’, ‘dev’等;options表示選項,比如將日誌輸出到終端或者文件,這個參數是可選的。
format 為’combined’時的日誌樣例:
[0mGET / [32m200 [0m47.332 ms - 5137[0m [0mGET /javascripts/jquery-2.1.4.min.js [36m304 [0m12.931 ms
ormat 為’short’時的日誌樣例:
GET /home HTTP/1.1 304 - - 3.345 ms
3.在app.js中添加
var logger = require(‘morgan‘); const fs = require(‘fs‘); const moment = require(‘moment‘); // create a write stream (in append mode)var accessLogStream = fs.createWriteStream(path.join(__dirname, ‘access.log‘), { flags: ‘a‘, // 在該參數值中可以使用flag屬性指定對該文件采取什麽操作,默認值為‘r’(如果指定讀取的文件不存在,則拋出異常) encoding: ‘utf8‘ //使用encoding屬性指定使用何種編碼格式來讀取該文件 }) createWriteStream //createWriteStream方法創建一個寫入數據流對象,該對象的write方法用於寫入數據,end方法用於結束寫入操作。// setup the logger 同時加載輸出到終端和文件的morgan對象 app.use(logger(‘dev‘, { stream: accessLogStream }));
4 日誌輸出到文件,並按天輪轉
var express = require('express'); var morgan = require('morgan'); var fs = require('fs'); var path = require('path'); var fileStreamRotator = require('file-stream-rotator'); var app = express(); var logDir = path.join(__dirname, 'logs'); // ensure log directory exists fs.existsSync(logDir) || fs.mkdirSync(logDir); // create a rotating write stream var accessLogStream = fileStreamRotator.getStream({ date_format: 'YYYYMMDD', filename: path.join(logDir, 'access-%DATE%.log'), frequency: 'daily', verbose: true }); app.use(morgan('common', {stream: accessLogStream})); app.get('/to-rotate-file', function(req, res) { res.send('done!'); }); app.listen(3000);
註:參考文獻 http://ju.outofmemory.cn/entry/277400
Express的日誌模塊morgan