当使用Express框架开发Web应用时,通常需要记录一些请求和响应的日志信息,以便于后续的调试、问题排查等工作。Express提供了默认的日志组件morgan,使用该组件可以实现快速的日志记录。
安装morgan
在使用morgan前,需要先在项目中安装该模块。
npm install morgan --save
使用morgan
安装完成morgan后,可以在应用中使用该模块进行日志记录。下面是一个简单的Express应用,展示了如何在其中使用morgan进行日志记录。
const express = require('express');
const morgan = require('morgan');
const app = express();
// 使用morgan的combined格式记录日志
app.use(morgan('combined'));
// 应用路由
app.get('/', function (req, res) {
res.send('Hello World!')
});
// 监听端口
app.listen(3000, function () {
console.log('Example app listening on port 3000!');
});
在上述代码中,我们使用了morgan('combined')
来创建一个中间件,该中间件会将请求和响应的消息记录在日志中。'combined'
表示记录的格式为Apache的combined格式,包含了大部分信息,例如请求方法、请求路径、请求时间、响应状态码、响应大小等等。
在日志中具体的记录信息如下:
127.0.0.1 - username [10/Oct/2021:15:01:27 +0000] "GET / HTTP/1.1" 200 12 "-" "curl/7.64.0"
其中各字段解释如下:
127.0.0.1
:远程地址username
:用户ID[10/Oct/2021:15:01:27 +0000]
:日期时间"GET / HTTP/1.1"
:请求行200
:状态码20
:响应数据长度"-"
:Referrer"curl/7.64.0"
:用户代理
自定义日志格式
除了使用默认的combined格式之外,morgan还提供了多种自定义日志格式的方式。例如,我们可以使用:method :url :status :res[content-length] - :response-time ms
这个格式来仅记录每个请求的方法、路径、状态码、响应数据长度和响应时间。我们可以通过如下代码来实现:
const express = require('express');
const morgan = require('morgan');
const app = express();
// 使用自定义格式记录日志
app.use(morgan(':method :url :status :res[content-length] - :response-time ms'));
// 应用路由
app.get('/', function (req, res) {
res.send('Hello World!')
});
// 监听端口
app.listen(3000, function () {
console.log('Example app listening on port 3000!');
});
在这个例子中,我们使用了:method :url :status :res[content-length] - :response-time ms
这个格式来记录日志。其中,各个占位符的含义如下:
:method
:HTTP请求方法:url
:请求路径:status
:响应状态码:res[content-length]
:响应数据长度:response-time
:响应时间
小结
使用morgan可以非常方便地记录Web应用程序的日志,仅需一行代码即可轻松实现。在使用morgan时,可以选择默认的combined格式,也可以自定义日志格式来满足不同的日志需求。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:express默认日志组件morgan的方法 - Python技术站