morgan是express默认的日志中间件,通过插拔方式引入express框架中,本文将从以下几方面内容展开。

  • 日志控制台显示
// 安装包
$npm install express morgan -s
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);$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
  • 日志文件保存
var accessLogStream = fs.createWriteStream(path.join(__dirname, 'access.log'), {flags: 'a'});
app.use(morgan('short', {stream: accessLogStream}));
  • API介绍

morgan(format, options) 返回express的中间件
参数说明:
format:可选,morgan与定义了几种日志格式,每种格式都有对应的名称,比如combined、short等,默认是default
options:可选,配置项,包含stream(常用)、skip、immediate
stream:日志的输出流配置,默认是process.stdout
skip:是否跳过日志记录

morgan('combined', {skip: function (req, res) { return res.statusCode < 400 }
})

immediate:布尔值,默认是false。当为true时,一收到请求,就记录日志;如果为false,则在请求返回后,再记录日志

自定义fromt

var express = require('express');
var app = express();
var morgan = require('morgan');morgan.format('joke', '[joke] :method :url :status');app.use(morgan('joke'));app.use(function(req, res, next){res.send('ok');
});app.listen(3000);

自定义token

var express = require('express');
var app = express();
var morgan = require('morgan');// 自定义token
morgan.token('from', function(req, res){return req.query.from || '-';
});// 自定义format,其中包含自定义的token
morgan.format('joke', '[joke] :method :url :status :from');// 使用自定义的format
app.use(morgan('joke'));app.use(function(req, res, next){res.send('ok');
});app.listen(3000);
  • 日志切割
var FileStreamRotator = require('file-stream-rotator')
var express = require('express')
var fs = require('fs')
var morgan = require('morgan')
var path = require('path')var app = express()
var logDirectory = path.join(__dirname, 'log')// ensure log directory exists
fs.existsSync(logDirectory) || fs.mkdirSync(logDirectory)// create a rotating write stream
var accessLogStream = FileStreamRotator.getStream({date_format: 'YYYYMMDD',filename: path.join(logDirectory, 'access-%DATE%.log'),frequency: 'daily',verbose: false
})// setup the logger
app.use(morgan('combined', {stream: accessLogStream}))app.get('/', function (req, res) {res.send('hello, world!')
})
  • 日志数据库存储

待续

express框架日志处理组件morgan相关推荐

  1. node、express框架

    前面的话 Express是一个简洁.灵活的 node.js Web 应用开发框架, 它提供一系列强大的特性,帮助开发者创建各种 Web 和移动设备应用.本文将详细介绍express框架 概述 官网对E ...

  2. NodeJS,EXpress框架的一知半解

    一,什么是nodejs node.js是一个基于chrome V8引擎的JavaScript运行环境 (node.js并不是一门新的语言) 二.node.js的特点 1.事件驱动 2.非阻塞I/O 3 ...

  3. node.js Express框架入门

    一.为什么要用Express框架? Node.js由于不需要另外的HTTP服务器,因此减少了一层抽象,给性能带了不少的提升,同时也因此提高了开发难度,实现一个POST数据的表单,例如: <for ...

  4. Golang高性能日志库zap + lumberjack 日志切割组件详解

    文章篇幅较长,可以先收藏防止迷路~ 目录 zap日志库 1. why zap? 2. 简单使用 3. 自定义logger例子 4. Gin项目使用zap 6. lumberjack 日志切割组件 za ...

  5. 使用实例展示Express框架app函数的详解

    0.Express框架简介 Express是Node.js中最受欢迎的Web应用程序框架之一.Express提供了许多有用的功能,使开发Web应用程序变得更加容易和高效. 以下是Express框架的一 ...

  6. 浅谈express框架

    目录 express 安装express和使用 使用express创建一个简单的服务器 中间件分类 express.static()中间件处理逻辑: 使用express封装一个商品接口 => g ...

  7. Java日志框架日志门面介绍

    文章目录 一.日志 二.常见日志框架 历史 各大框架介绍 JUL Log4j(1999-2015) Logback(2006-?) Log4j2 Logback与Log4j2对比 三.日志门面 什么是 ...

  8. express框架在nodejs中的使用+解决跨域问题(cors三方库)

    第一部分commonJS使用第三方框架 一.托管静态资源(让用户直接访问静态资源) 例如,如上url分别是请求一张图片,一份样式文件,一份js代码.我们实现的web服务器需要能够直接返回这些文件的内容 ...

  9. Node.js学习笔记(七)#Express框架

    目录 一.Express框架简介 二.安装和使用 1.安装 2.用express创建基本Web服务器 三.Express路由 1.路由概念 2.创建基本路由 ①.创建一个简单的get路由 ② 创建一个 ...

最新文章

  1. Spring Cloud开发实践 - 04 - Docker部署
  2. 《Adobe After Effects CS6完全剖析》——动画:最重要的是关系
  3. 最强鸿蒙系统txt_鸿蒙系统升级时间确认,哪些手机有望成为首批“宠儿”?
  4. aspose excel中文文档_Excel实战技巧,如何将阿拉伯数字快速转换为中文大小写格式?...
  5. AutoCAD DWG,DXF文件导出高清图片、PDF
  6. 合工大离散数学实验 油管实验
  7. 201609-2 python CCF 更简单的思路和代码 100分
  8. 【转】SLAM 论文阅读和分类整理
  9. xposed 框架学习
  10. 首届Starcoin Move黑客松源码分析——Atlaspad
  11. python矩阵乘法 点乘_Tensorflow矩阵运算实例(矩阵相乘,点乘,行/列累加)
  12. 词云可视化——四行代码轻松上手
  13. php基于cookie的注册,关于php:如何为注册页面设置Cookie?
  14. Windows:MULTIPROCESSOR CONFIGURATION NOT SUPPORTED蓝屏(32位(win10/LTSC 2019/LTSC 2021))
  15. 上职高学计算机可以考师范大学吗,职业高中也可以考大学,你知道吗?
  16. android 代码混淆
  17. 上海踩踏事件所想,莫把应急预案当摆设
  18. IDEA Maven工程出现org.codehaus.plexus.component.repository.exception.ComponentLookupException错误
  19. 千里送人头  ——APIO2017 游记
  20. 域名怎么解析到服务器上

热门文章

  1. 第三章:3.8 登陆 Django 默认后台
  2. Openwrt 软件安装源
  3. java web 三层架构
  4. conky的自动启动
  5. JMETER 各组件执行顺序与作用域
  6. graphics | 基础绘图系统(一)——主函数plot及其参数
  7. python正则匹配统计_用Python正则表达式搜索统计命令行管道中的所有数字
  8. 指针用完了怎么办_墙体里水管漏水怎么办?瞧瞧这个,轻松搞定,滴水不漏
  9. 数据库字段与属性的关系是什么?
  10. 高斯主元素消去法c语言,列主元Gauss消去法(C++实现)