Add detailed 404 error logging for invalid requests
- Log invalid request method, URL, path, and parameters - Display query parameters and request body if present - Show client IP and User-Agent information - Return helpful error message with available endpoints - Format console output with clear visual separators
This commit is contained in:
58
server.js
58
server.js
@@ -34,6 +34,64 @@ app.get('/', (req, res) => {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// 404 处理 - 捕获所有未匹配的路由
|
||||||
|
app.use((req, res, next) => {
|
||||||
|
const errorInfo = {
|
||||||
|
timestamp: new Date().toISOString(),
|
||||||
|
method: req.method,
|
||||||
|
url: req.originalUrl || req.url,
|
||||||
|
path: req.path,
|
||||||
|
query: req.query,
|
||||||
|
params: req.params,
|
||||||
|
body: req.body,
|
||||||
|
headers: {
|
||||||
|
'content-type': req.headers['content-type'],
|
||||||
|
'user-agent': req.headers['user-agent'],
|
||||||
|
'origin': req.headers['origin'],
|
||||||
|
'referer': req.headers['referer']
|
||||||
|
},
|
||||||
|
ip: req.ip || req.connection.remoteAddress
|
||||||
|
};
|
||||||
|
|
||||||
|
console.error('\n' + '='.repeat(80));
|
||||||
|
console.error('❌ 非法请求地址');
|
||||||
|
console.error('='.repeat(80));
|
||||||
|
console.error(`时间: ${errorInfo.timestamp}`);
|
||||||
|
console.error(`方法: ${errorInfo.method}`);
|
||||||
|
console.error(`地址: ${errorInfo.url}`);
|
||||||
|
console.error(`路径: ${errorInfo.path}`);
|
||||||
|
|
||||||
|
if (Object.keys(errorInfo.query).length > 0) {
|
||||||
|
console.error(`查询参数: ${JSON.stringify(errorInfo.query, null, 2)}`);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (errorInfo.body && Object.keys(errorInfo.body).length > 0) {
|
||||||
|
console.error(`请求体: ${JSON.stringify(errorInfo.body, null, 2)}`);
|
||||||
|
}
|
||||||
|
|
||||||
|
console.error(`客户端IP: ${errorInfo.ip}`);
|
||||||
|
console.error(`User-Agent: ${errorInfo.headers['user-agent'] || 'N/A'}`);
|
||||||
|
|
||||||
|
if (errorInfo.headers.referer) {
|
||||||
|
console.error(`来源: ${errorInfo.headers.referer}`);
|
||||||
|
}
|
||||||
|
|
||||||
|
console.error('='.repeat(80) + '\n');
|
||||||
|
|
||||||
|
logError('Invalid request path', errorInfo);
|
||||||
|
|
||||||
|
res.status(404).json({
|
||||||
|
error: 'Not Found',
|
||||||
|
message: `路径 ${req.method} ${req.path} 不存在`,
|
||||||
|
timestamp: errorInfo.timestamp,
|
||||||
|
availableEndpoints: [
|
||||||
|
'GET /v1/models',
|
||||||
|
'POST /v1/chat/completions'
|
||||||
|
]
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
// 错误处理中间件
|
||||||
app.use((err, req, res, next) => {
|
app.use((err, req, res, next) => {
|
||||||
logError('Unhandled error', err);
|
logError('Unhandled error', err);
|
||||||
res.status(500).json({
|
res.status(500).json({
|
||||||
|
|||||||
Reference in New Issue
Block a user