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可以提出,不喜勿喷