Express的日志模块morgan

Posted 开始战斗

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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’时的日志样例:

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的主要内容,如果未能解决你的问题,请参考以下文章

Morgan Logger + Express.js:写入文件并在控制台中显示

express入口代码解释

Express接口综合案例(创建项目配置常用中间件路由设计提取控制器模块配置错误统一处理中间件用户注册的数据验证,密码加密)

node 日志

Express4.10.2开发框架中默认app.js的代码注释

Express实战 - 应用案例- realworld-API - 路由设计 - mongoose - 数据验证 - 密码加密 - 登录接口 - 身份认证 - token - 增删改查API(代码片段