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. ms - [0m
[0mGET /javascripts/jquery-2.1..min.js [36m304 [0m12. ms

ormat 为’short’时的日志样例:

GET /home HTTP/1.1  - - 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();

注:参考文献 http://ju.outofmemory.cn/entry/277400

Express的日志模块morgan的更多相关文章

  1. Node 进阶:express 默认日志组件 morgan 从入门使用到源码剖析

    本文摘录自个人总结<Nodejs学习笔记>,更多章节及更新,请访问 github主页地址.欢迎加群交流,群号 197339705. 章节概览 morgan是express默认的日志中间件, ...

  2. 【腾讯Bugly干货分享】微信mars 的高性能日志模块 xlog

    本文来自于腾讯bugly开发者社区,未经作者同意,请勿转载,原文地址:http://dev.qq.com/topic/581c2c46bef1702a2db3ae53 Dev Club 是一个交流移动 ...

  3. Python 日志模块 logging通过配置文件方式使用

    vim logger_config.ini[loggers]keys=root,infoLogger,errorlogger [logger_root]level=DEBUGhandlers=info ...

  4. 搭建一套自己实用的.net架构(2)【日志模块-log4net】

    先谈谈简单的模块,日志.在系统中日志模块是必须的,什么系统日志,操作日志,调试日志.这里用的是log4net. 对log4net还不熟悉的小伙伴们赶快去搜索基础教程哦, 我这里就不温故了. 那么有人要 ...

  5. logging 日志模块学习

    logging 日志模块,用于记录系统在运行过程中的一些关键信息,以便于对系统的运行状况进行跟踪,所以还是灰常重要滴,下面我就来从入门到放弃的系统学习一下日志既可以在屏幕上显示,又可以在文件中体现. ...

  6. 【腾讯Bugly干货分享】微信终端跨平台组件 mars 系列(一) - 高性能日志模块xlog

    本文来自于腾讯bugly开发者社区,非经作者同意,请勿转载,原文地址:http://dev.qq.com/topic/57ff5932cde42f1f03de29b1 本文来源: 微信客户端开发团队 ...

  7. 日志模块logging使用心得

    在应用程序使用中,日志输出对应用维护人员.开发人员判断程序的问题起重要作用. 那么在python中如何定义程序的日志输出? 推荐使用日志模块logging 需求:实现日志内容输出在文件中和控制器中 i ...

  8. python日志模块

    许多应用程序中都会有日志模块,用于记录系统在运行过程中的一些关键信息,以便于对系 统的运行状况进行跟踪.在.NET平台中,有非常著名的第三方开源日志组件log4net,c++中,有人们熟悉的log4c ...

  9. ns3 Tutorial 中的日志模块(翻译)

      转载地址:http://blog.sina.com.cn/s/blog_8ecca79b0101d7fe.html     1  日志模块的使用   在运行 first.cc 脚本时,我们已经简单 ...

随机推荐

  1. simple--factory--abstract

    <?php /* 示例2: */ //简单工厂模式 /* * 定义运算类 */ abstract class Operation { protected $_NumberA = 0; prote ...

  2. 每天一个Linux命令(29)du命令

        du命令是对文件和目录磁盘使用的空间的查看.     (1)用法:     用法:  du  [选项]  [文件]     (2)功能:     功能:  报告磁盘空间使用情况     (3) ...

  3. linux基本使用

    (待完善,想到哪就写到哪,目前内容大幅度参考中文man手册) 最重要的命令(man) 在 Linux 下遇到问题,最重要的是要自己寻求帮助, google是个好东西 man 是 Linux 的帮助手册 ...

  4. 大话设计模式--中介者模式 Mediator --C++实现实例

    1. 中介者模式: 用一个中介对象来封装一系列的对象交互,中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立改变他们之间的交互. Mediator的出现减少了各个Colleague的耦 ...

  5. 介绍几款Web服务器性能压力测试工具

    一.http_load 程序非常小,解压后也不到100K http_load以并行复用的方式运行,用以测试web服务器的吞吐量与负载. 但是它不同于大多数压力测试工具,它可以以一个单一的进程运行,一般 ...

  6. python第六篇:Python复制超大文件、复制二进制文件

    Python文件复制 # 写程序实现复制文件的功能 # 要求: # 1. 源文件路径和目标文件路径需要手动输入 # 2. 要考虑文件关闭的问题 # 3. 要考虑复制超大文件的问题 # 4. 要能复制二 ...

  7. AngularJs 相应回车事件

    最近做项目,要用到AngularJs,之前也有用过一点点,但仅限于数据的绑定,这次项目要整个前端需要使用这个框架,可能是不熟悉的原因,感觉这代码搞起来非常的不便利,:现总结一个响应回车事件: < ...

  8. Python 爬虫 —— 网页内容解析(lxml)

    0. xpath 语法 找到所有 <img src=....> 图像的链接: xpath = './/img/@src' img_urls = html.xpath(xpath) @修饰节 ...

  9. 【二叉查找树】04根据升序数组构造二叉查找树【Convert Sorted Array to Binary Search Tree】

    ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 给定一个升序的数组,把他转换成一个 ...

  10. error: ‘errno’ was not declared in this scope

    问题: 将一个c文件改为cpp文件,其中的perror()改用C++中的std::cerr << strerror(error) << std::endl;来替换. 重新编译文 ...