node.js的express中的morgan简单应用和日志写入

一、node.js创建express脚手架

用命令行创建express脚手架:express -e 项目名
创建的项目里已经安装好了morgan
在这里插入图片描述

二、morgan的基本知识

morgan的github网站链接:https://github.com/expressjs/morgan

1、dev
1.1、app.use(logger(‘dev’))

在express的app.js中:app.use(logger('dev'));这里logger有一个参数 dev
文档中给出了一段格式:
请求方法 ;请求的url和状态 ;响应耗时间 ;响应结果
:method :url :status :response-time ms - :res[content-length]
在这里插入图片描述

1.2、app.use(logger(‘dev’,{stream:process.stdout})

logger第二个参数:app.use(logger('dev',{stream:process.stdout}),标准输出流;这个参数是默认的;所以可以不用写

如果是在开发环境中;用dev返回的基本数据是足够的;但是在线上环境这些数据还不足够

2、combined
2.1、app.use(logger(‘combined’))

所以线上环境可以用app.use(logger('combined'));
在文档中给出的格式是:
IP ;时间 ;请求方法 ;url;请求状态 ;带协议名和域名的url;响应结果;请求的引用头;请求用户代理头
:remote-addr - :remote-user [:date[clf]] “:method :url HTTP/:http-version” :status :res[content-length] “:referrer” “:user-agent”

在这里插入图片描述
文档中有很多详细的用法;还有很多格式;大家可以按照自己的需求查看使用

三、morgan的使用

1、简单使用

直接这样使用控制台就有信息输出了;

app.use(logger('dev'));
2、写入文档
2.1、package.json

这里我是用nodemon和cross-env

对于初学者简单介绍一下
nodemon:修改代码后自动重启工具
cross-env:是一款运行跨平台设置和使用环境变量的脚本。

没有记得安装一下

因为是介绍morgan的功能这里线上就用了nodemon模拟执行;大家谅解一下

npm install cross-env --save-dev
npm install -g nodemon  

在这里插入图片描述

2.2、app.js

关于文件的目录创建 、内容写入可以参考我的上篇博客
node.js日志文件的目录创建 、内容写入:fs.writeFile()和writerStream两种方法

	const fs=require('fs');
			.
			.
			.
	//获取执行方式并判断使用哪种方法输出信息
	const ENV = process.env.NODE_ENV
	//ENV != production------>代表不是线上环境
	if (ENV != 'production') {
		app.use(logger('dev')); //开发环境用默认得输出流就行了
	} else {
		//写入对应的日志文件
		const logFileName = path.join(__dirname, 'log', 'access.log');
		//创建写入流
		const writeStream = fs.createWriteStream(logFileName, {
			flags: 'a' //追加
		});
		//把输出流改成我们得写入流;就可以写入文件了
		app.use(logger('combined', {
			stream: writeStream
		})); 
	}

在开发环境下就在控制台输出dev格式的内容;在线上环境则是combined格式并写入文本
在项目的目录下,控制台运行npm run dev和npm run prd测试
在这里插入图片描述

在这里插入图片描述在这里插入图片描述
morgan 的简单应用到这里就结束了;如果有什么问题或者bug可以提出,不喜勿喷

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值