Morgan (node.js):使用自定义格式时着色状态代码(如“dev”中)

作者:编程家 分类: 编程代码 时间:2025-07-15

使用Morgan库可以很方便地记录Node.js应用程序中的HTTP请求日志。Morgan提供了许多不同的格式选项,可以根据需要自定义日志的输出格式。其中一个常见的用法是使用自定义格式来着色状态代码,例如在开发环境中以不同的颜色来区分不同的状态。

自定义格式的用途

自定义格式可以帮助开发人员更好地理解和分析应用程序的HTTP请求日志。通过为状态代码添加颜色,我们可以快速地识别出成功的请求、重定向和错误等不同类型的响应。这对于调试和故障排除非常有帮助,特别是在开发环境中。

自定义格式的实现

下面是一个示例代码,演示了如何使用Morgan的自定义格式功能来为状态代码着色:

javascript

const express = require('express');

const morgan = require('morgan');

const app = express();

// 自定义状态代码颜色

morgan.token('status-color', (req, res) => {

const status = res.statusCode;

let color;

if (status >= 500) {

color = '\x1b[31m'; // 红色

} else if (status >= 400) {

color = '\x1b[33m'; // 黄色

} else if (status >= 300) {

color = '\x1b[36m'; // 青色

} else {

color = '\x1b[32m'; // 绿色

}

return color + status + '\x1b[0m'; // 恢复默认颜色

});

app.use(morgan(':status-color'));

app.get('/', (req, res) => {

res.send('Hello, World!');

});

app.listen(3000, () => {

console.log('Server started on port 3000');

});

在上面的代码中,我们使用`morgan.token`方法定义了一个名为`status-color`的新Token。这个Token接收`req`和`res`参数,并根据响应的状态代码来确定所需的颜色。然后,我们在自定义格式字符串中使用`':status-color'`来引用这个新Token,以便Morgan可以将其替换为着色的状态代码。

案例代码说明

上面的示例代码创建了一个简单的Express应用程序,并将Morgan中间件应用于应用程序。在自定义格式字符串中,我们使用了`':status-color'`来引用我们刚刚定义的`status-color` Token。这样,每次收到请求时,Morgan都会将响应的状态代码替换为相应的颜色。

使用自定义格式来着色状态代码是使用Morgan库的一种常见用法。通过为不同类型的响应添加颜色,开发人员可以更轻松地分析和理解应用程序的HTTP请求日志。这对于开发过程中的调试和故障排除非常有帮助。希望这篇文章对你理解和使用Morgan的自定义格式功能有所帮助。