1. 程式人生 > >Express的日誌模塊morgan

Express的日誌模塊morgan

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’時的日誌樣例:

GET / 200 47.332 ms - 5137
GET /javascripts/jquery-2.1.4.min.js 304 12.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