Node 進階:express 預設日誌元件 morgan 使用筆記
阿新 • • 發佈:2018-11-12
1.安裝
npm install express morgan
2.使用案例(預設)
var express = require('express'); var app = express(); var morgan = require('morgan'); app.use(morgan('short')); app.use(function(req, res, next){ res.send('ok'); }); app.listen(3000); eg: 2016.12.11-advanced-morgan git:(master) ✗ node basic.js ::ffff:127.0.0.1 - GET / HTTP/1.1 304 - - 3.019 ms ::ffff:127.0.0.1 - GET /favicon.ico HTTP/1.1 200 2 - 0.984 ms
核心API morgan的API非常少,使用頻率最高的就是morgan(),作用是返回一個express日誌中介軟體。 morgan(format, options) 引數說明如下: format:可選,morgan與定義了幾種日誌格式,每種格式都有對應的名稱,比如combined、short等,預設是default。不同格式的差別可參考這裡。下文會講解下,如果自定義日誌格式。 options:可選,配置項,包含stream(常用)、skip、immediate。 stream:日誌的輸出流配置,預設是process.stdout。 skip:是否跳過日誌記錄,使用方式可以參考這裡。 immediate:布林值,預設是false。當為true時,一收到請求,就記錄日誌;如果為false,則在請求返回後,再記錄日誌。 自定義日誌格式 首先搞清楚morgan中的兩個概念:format 跟 token。非常簡單: format:日誌格式,本質是代表日誌格式的字串,比如 :method :url :status :res[content-length] - :response-time ms。 token:format的組成部分,比如上面的:method、:url即使所謂的token。 搞清楚format、token的區別後,就可以看下morgan中,關於自定義日誌格式的關鍵API。 morgan.format(name, format); // 自定義日誌格式 morgan.token(name, fn); // 自定義token
3.使用案例(自定義format)
var express = require('express');
var app = express();
var morgan = require('morgan');
morgan.format('hcsy', '[hcsy] :method :url :status');
app.use(morgan('hcsy'));
app.use(function(req, res, next){
res.send('ok');
});
app.listen(3000);
eg:
[hcsy] GET /users 304