Express的日志模块morgan
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