您的位置:首页 >Node.js日志中异常请求如何识别
发布于2026-05-02 阅读(0)
扫一扫,手机访问
处理Web应用时,异常请求就像系统健康度的“哨兵”。能否及时、准确地捕获并记录它们,直接关系到服务的稳定性和可观测性。今天,我们就来深入探讨一下,在Node.js的Express框架中,如何利用中间件这套精密的“捕网”来识别和记录这些异常请求。

话不多说,我们先从环境搭建开始。整个过程清晰直接,可以分为几个关键步骤。
首先,你需要确保项目里已经安装了Express和Morgan这两个核心的npm包。Morgan专门用来记录请求日志,是我们的“记录官”。打开终端,执行下面这行命令:
npm install express morgan
环境就绪后,创建一个名为app.js的文件。接下来的代码,将一步步构建起我们的监控体系。
const express = require('express');
const morgan = require('morgan');
const app = express();
// 自定义Morgan日志格式,包含状态码和响应时间
morgan.token('status', (req, res) => {
return res.statusCode;
});
morgan.token('response-time', (req, res) => {
return res.get('X-Response-Time');
});
app.use(morgan(':method :url :status :response-time ms - :res[content-length]'));
// 示例路由
app.get('/', (req, res) => {
res.send('Hello World!');
});
app.get('/error', (req, res) => {
// 抛出一个异常
throw new Error('Oops! Something went wrong.');
});
// 异常处理中间件
app.use((err, req, res, next) => {
console.error('Exception caught:', err.message);
res.status(500).send('Internal Server Error');
});
const PORT = process.env.PORT || 3000;
app.listen(PORT, () => {
console.log(`Server is running on port ${PORT}`);
});
看到这里,你可能已经发现了这套设计的巧妙之处。我们不仅仅使用了Morgan,还对其进行了自定义扩展,让它能记录下每个请求的HTTP状态码和响应时间——这两个是判断请求是否异常的黄金指标。
更关键的是代码末尾的异常处理中间件。它就像守在最后一道防线的卫士,任何在前置路由中未被捕获的异常,都会被它稳稳接住。接住之后做什么?两件事:在服务端控制台打印详细的错误信息,同时给客户端返回一个清晰的500内部服务器错误响应。这样一来,日志有了,用户体验也得到了保障。
理论说得再好,不如跑起来看看。要启动这个示例应用,只需在终端执行:
node app.js
服务器启动后,试着在浏览器中访问 http://localhost:3000/error。这时,你会立刻在终端日志里看到这次异常访问的记录。同时,浏览器页面也会显示“Internal Server Error”。
整个过程下来,你会发现,识别异常请求并非难事。核心就在于利用好中间件的执行顺序,并通过自定义日志格式来丰富监控维度。这套组合拳,能让你对应用的运行状况了如指掌,一旦有“风吹草动”,就能第一时间定位问题根源。
下一篇:centos php如何管理依赖
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
9