|
@@ -11,25 +11,49 @@ class RequestLog {
|
|
|
|
|
|
|
|
async insertLog(req, resData, namespace, method, path) {
|
|
async insertLog(req, resData, namespace, method, path) {
|
|
|
try {
|
|
try {
|
|
|
- const time = new Date().getTime()
|
|
|
|
|
- const ip = this.getClientIp(req)
|
|
|
|
|
- let ipData = await this.searcher.search(ip)
|
|
|
|
|
- ipData = ipData.region
|
|
|
|
|
|
|
+ const time = Date.now();
|
|
|
|
|
+ const ip = this.getClientIp(req);
|
|
|
|
|
|
|
|
- const userAgent = req.headers['user-agent']
|
|
|
|
|
|
|
+ let ipData
|
|
|
|
|
+ try {
|
|
|
|
|
+ let ipInfo = await this.searcher.search(ip)
|
|
|
|
|
+ ipData = ipInfo?.region ?? null
|
|
|
|
|
+ } catch {
|
|
|
|
|
+ ipData = null
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ const userAgent = req.headers['user-agent'] ?? null;
|
|
|
const deviceType = req.headers['device-type'] ?? '浏览器'
|
|
const deviceType = req.headers['device-type'] ?? '浏览器'
|
|
|
|
|
|
|
|
- let reqData
|
|
|
|
|
- if (method === 'get') {
|
|
|
|
|
- reqData = req.query
|
|
|
|
|
- } else {
|
|
|
|
|
- reqData = req.body
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ let reqData = method.toLowerCase() === 'get' ? req.query : req.body
|
|
|
|
|
+
|
|
|
|
|
+ const safe = (v) => (v === undefined ? null : v)
|
|
|
|
|
|
|
|
- let sql = 'INSERT INTO requestLog (create_user, create_time, method, reqData, resData, code, ip, ua, deviceType, apiName, location, url) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)'
|
|
|
|
|
- let r = await db.query(sql, [reqData.uuid ?? '', time, method, reqData ?? {}, resData, resData.code, ip, userAgent, deviceType, namespace ?? '未知', ipData ?? '未知', path])
|
|
|
|
|
- if (!r || r.affectedRows !== 1)
|
|
|
|
|
|
|
+ const sql = `
|
|
|
|
|
+ INSERT INTO requestLog
|
|
|
|
|
+ (create_user, create_time, method, reqData, resData, code, ip, ua, deviceType, apiName, location, url)
|
|
|
|
|
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
|
|
|
+ `
|
|
|
|
|
+
|
|
|
|
|
+ const params = [
|
|
|
|
|
+ safe(reqData?.uuid) ?? '', // create_user
|
|
|
|
|
+ time, // create_time
|
|
|
|
|
+ method, // method
|
|
|
|
|
+ JSON.stringify(reqData ?? {}), // reqData
|
|
|
|
|
+ JSON.stringify(resData ?? {}), // resData
|
|
|
|
|
+ safe(resData?.code), // code
|
|
|
|
|
+ safe(ip), // ip
|
|
|
|
|
+ safe(userAgent), // ua
|
|
|
|
|
+ safe(deviceType), // deviceType
|
|
|
|
|
+ namespace ?? '未知', // apiName
|
|
|
|
|
+ safe(ipData) ?? '未知', // location
|
|
|
|
|
+ path // url
|
|
|
|
|
+ ];
|
|
|
|
|
+
|
|
|
|
|
+ let r = await db.query(sql, params)
|
|
|
|
|
+ if (!r || r.affectedRows !== 1) {
|
|
|
this.logger.error(`插入日志信息失败!数据库错误`)
|
|
this.logger.error(`插入日志信息失败!数据库错误`)
|
|
|
|
|
+ }
|
|
|
} catch (error) {
|
|
} catch (error) {
|
|
|
this.logger.error(`插入日志信息失败!${error}`)
|
|
this.logger.error(`插入日志信息失败!${error}`)
|
|
|
}
|
|
}
|