【Express.js】异常分类和日志分级
发布人:shili8
发布时间:2025-02-11 12:23
阅读次数:0
**Express.js 异常分类和日志分级**
在 Express.js 应用中,异常处理是非常重要的。异常可以分为两大类:业务异常和系统异常。业务异常通常是由应用逻辑错误引起的,而系统异常则是由底层环境或框架本身的问题导致的。
**异常分类**
1. **业务异常(Business Error)**
* 由应用逻辑错误引起的异常,例如:
+ 数据验证失败+业务规则不符+ API 请求参数错误等2. **系统异常(System Error)**
* 由底层环境或框架本身的问题导致的异常,例如:
+ 内存不足+ 网络连接问题+ 库函数调用失败等**日志分级**
在 Express.js 应用中,我们可以使用 Winston 日志库来记录应用的运行状态。Winston 提供了多种日志分级选项,例如:
1. **debug**
2. **info**
3. **warn**
4. **error**
我们可以根据异常类型选择合适的日志分级。
**示例代码**
javascriptconst express = require('express');
const winston = require('winston');
// 创建一个 Winston 日志实例const logger = winston.createLogger({
level: 'info',
format: winston.format.json(),
transports: [
new winston.transports.Console()
]
});
// Express.js 应用实例const app = express();
//业务异常处理函数function businessErrorHandler(err, req, res, next) {
// 日志记录 logger.error('业务异常:', err);
// 返回错误响应 res.status(500).send({ message: '业务异常' });
}
// 系统异常处理函数function systemErrorHandler(err, req, res, next) {
// 日志记录 logger.error('系统异常:', err);
// 返回错误响应 res.status(500).send({ message: '系统异常' });
}
// Express.js 应用中注册异常处理函数app.use((err, req, res, next) => {
if (err instanceof BusinessError) {
businessErrorHandler(err, req, res, next);
} else {
systemErrorHandler(err, req, res, next);
}
});
// Express.js 应用启动const port =3000;
app.listen(port, () => {
console.log(`Express.js 应用已启动,端口:${port}`);
});
在上述示例代码中,我们定义了两个异常处理函数:`businessErrorHandler` 和 `systemErrorHandler`。这两个函数分别用于处理业务异常和系统异常。
我们使用 Winston 日志库记录应用的运行状态,并根据异常类型选择合适的日志分级。
**总结**
在 Express.js 应用中,异常分类和日志分级是非常重要的。通过正确地识别和处理异常,我们可以确保应用的稳定性和可靠性。
本文介绍了业务异常和系统异常的区别,以及如何使用 Winston 日志库记录应用的运行状态。我们还提供了示例代码,展示了如何在 Express.js 应用中注册异常处理函数,并根据异常类型选择合适的日志分级。

