是否可以使用 morgan 记录错误消息?
Is it possible to log error messages using morgan?
我正在使用 morgan 记录请求和响应,一切正常。我想知道是否有任何方法可以记录错误消息?例如:如果 try catch
块在我的应用程序中失败,我将向用户返回 500
错误和自定义消息。但是有没有办法记录实际的 error.message
?
来自我的应用程序的代码段
try {
// Resend OTP
let otp_server_response = await sms.resendOTP(mobile_number, resend_mode);
if(otp_server_response.type === "success") {
return res.status(200).json({ message: "OTP_RESENT" });
} else {
console.log(otp_server_response.message); // <= Log this message in morgan logs if request reaches here
return res.status(400).json({ message: "OTP_RESENDING_FAILED" });
}
}
catch (error) {
console.log(error.message); // <= Log this message in morgan logs if request reaches here
return res.status(500).json({ message: "SOME_ERROR_OCCURRED" });
}
我的记录器文件的片段
const errorLogFormat = ":requestId :status :res[content-length] :response-time ms";
.
.
.
// Log error responses (4xx and 5xx)
morganLogger(
errorLogFormat,
{
skip: (req, res) => {
return res.statusCode < 400
},
stream: rfs(
"responses.log",
{
interval: "1d",
path: logDirectory
}
)
}
)
不这么认为。据我所知,该模块不包含实际错误。话虽如此,您可以使用
之类的内容将错误保存在错误处理程序中
req.error = err;
然后您可以在您的自定义令牌中访问 req.error。
我正在使用 morgan 记录请求和响应,一切正常。我想知道是否有任何方法可以记录错误消息?例如:如果 try catch
块在我的应用程序中失败,我将向用户返回 500
错误和自定义消息。但是有没有办法记录实际的 error.message
?
来自我的应用程序的代码段
try {
// Resend OTP
let otp_server_response = await sms.resendOTP(mobile_number, resend_mode);
if(otp_server_response.type === "success") {
return res.status(200).json({ message: "OTP_RESENT" });
} else {
console.log(otp_server_response.message); // <= Log this message in morgan logs if request reaches here
return res.status(400).json({ message: "OTP_RESENDING_FAILED" });
}
}
catch (error) {
console.log(error.message); // <= Log this message in morgan logs if request reaches here
return res.status(500).json({ message: "SOME_ERROR_OCCURRED" });
}
我的记录器文件的片段
const errorLogFormat = ":requestId :status :res[content-length] :response-time ms";
.
.
.
// Log error responses (4xx and 5xx)
morganLogger(
errorLogFormat,
{
skip: (req, res) => {
return res.statusCode < 400
},
stream: rfs(
"responses.log",
{
interval: "1d",
path: logDirectory
}
)
}
)
不这么认为。据我所知,该模块不包含实际错误。话虽如此,您可以使用
之类的内容将错误保存在错误处理程序中req.error = err;
然后您可以在您的自定义令牌中访问 req.error。