From 7bc4ff45771ee88eef5f848c89f31b75a3ea78a8 Mon Sep 17 00:00:00 2001 From: luying Date: Tue, 27 Jul 2021 16:56:57 +0800 Subject: [PATCH] =?UTF-8?q?=E6=97=A5=E5=BF=97=EF=BC=9A=E7=9F=AD=E9=93=BE?= =?UTF-8?q?=E6=8E=A5=E8=AE=B0=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- game-server/app/services/equipService.ts | 1 - gm-server/app/middleware/log.ts | 20 ++++++++++++++++++++ gm-server/app/service/Utils.ts | 14 ++++++++++++++ gm-server/config/config.default.ts | 19 ++++++++++++++++++- gm-server/config/config.dev.ts | 19 ++++++++++++++++++- gm-server/config/config.isbn.ts | 19 ++++++++++++++++++- gm-server/config/config.local.ts | 19 ++++++++++++++++++- gm-server/config/config.monitor.ts | 19 ++++++++++++++++++- gm-server/typings/app/middleware/index.d.ts | 2 ++ package.json | 2 +- web-server/app/middleware/parmsDecode.ts | 14 +++++++++++++- web-server/app/middleware/tokenParser.ts | 2 ++ web-server/app/service/Utils.ts | 14 ++++++++++++++ web-server/config/config.alpha.ts | 14 ++++++++++++++ web-server/config/config.default.ts | 15 +++++++++++++++ web-server/config/config.dev.ts | 14 ++++++++++++++ web-server/config/config.isbn.ts | 14 ++++++++++++++ web-server/config/config.local.ts | 17 ++++++++++++++++- web-server/config/config.monitor.ts | 14 ++++++++++++++ web-server/package.json | 1 + 20 files changed, 244 insertions(+), 9 deletions(-) create mode 100644 gm-server/app/middleware/log.ts diff --git a/game-server/app/services/equipService.ts b/game-server/app/services/equipService.ts index 8470d1cf1..97961d4d6 100644 --- a/game-server/app/services/equipService.ts +++ b/game-server/app/services/equipService.ts @@ -42,7 +42,6 @@ export function checkMaterialEnough(consumes: Array<{ id: number, count: number jewelInfo = getJewelById(jewelInfo.nextJewelId); } } - console.log('*******', JSON.stringify(needConsumes)); if (comJewelMap[jewel] != jewelCount || Object.keys(comJewelMap).length != 1)//检查最终是否可以合成目标宝石jewel,以及对应的数量jewelCount return false; return needConsumes; diff --git a/gm-server/app/middleware/log.ts b/gm-server/app/middleware/log.ts new file mode 100644 index 000000000..667b9a9e9 --- /dev/null +++ b/gm-server/app/middleware/log.ts @@ -0,0 +1,20 @@ +import { genCode } from "@pubUtils/util"; + +module.exports = () => { + return async function log(ctx, next) { + ctx.logcode = genCode(10); + + ctx.service.utils.log('INFO', `[${ctx.request.url}] [${ctx.logcode}] request: ${JSON.stringify(ctx.request.body)}`) + + + try{ + await next(); + } catch(e) { + ctx.service.utils.log('ERROR', `[${ctx.request.url}] [${ctx.logcode}] err: ${e.stack}`); + throw e; + } + const resBody = ctx.body; + ctx.service.utils.log('INFO', `[${ctx.request.url}] [${ctx.logcode}] res: ${JSON.stringify(resBody)}`) + }; +}; + diff --git a/gm-server/app/service/Utils.ts b/gm-server/app/service/Utils.ts index 26b25b697..222c85549 100644 --- a/gm-server/app/service/Utils.ts +++ b/gm-server/app/service/Utils.ts @@ -36,4 +36,18 @@ export default class Utils extends Service { public checkActivityData(data: any, type: number) { return { data, type } } + + public log(level: 'DEBUG'|'INFO'|'WARN'| 'ERROR', message: string) { + const log = this.app.loggers.get('linkLogger'); + + if(level == 'DEBUG') { + log.error(`${message}`); + } else if (level == 'INFO') { + log.info(`${message}`); + } else if (level == 'WARN') { + log.warn(`${message}`); + } else if (level == "ERROR") { + log.error(`${message}`); + } + } } diff --git a/gm-server/config/config.default.ts b/gm-server/config/config.default.ts index 2d10fdc0e..5451072a5 100644 --- a/gm-server/config/config.default.ts +++ b/gm-server/config/config.default.ts @@ -1,4 +1,5 @@ import { EggAppConfig, EggAppInfo, PowerPartial } from 'egg'; +const path = require('path'); export default (appInfo: EggAppInfo) => { const config = {} as PowerPartial; @@ -8,7 +9,7 @@ export default (appInfo: EggAppInfo) => { config.keys = appInfo.name + '_1600244957952_7142'; // add your egg config in here - config.middleware = []; + config.middleware = ['log']; config.cluster = { listen: { @@ -47,6 +48,22 @@ export default (appInfo: EggAppInfo) => { packages: [ '/root/zyz/web-server/package.json' ], }; + config.customLogger = { + linkLogger: { + file: path.join(appInfo.root, 'logs/gm-server/link-log.log'), + formatter(meta) { + return `[${meta.level}] [${meta.date}] ${meta.message}`; + }, + }, + }; + + config.logrotator = { + filesRotateBySize: [ + path.join(appInfo.root, 'logs/link-log.log'), + ], + maxFileSize: 1024, + }; + // the return config will combines to EggAppConfig return { ...config, diff --git a/gm-server/config/config.dev.ts b/gm-server/config/config.dev.ts index 794877360..af09db888 100644 --- a/gm-server/config/config.dev.ts +++ b/gm-server/config/config.dev.ts @@ -1,4 +1,5 @@ import { EggAppConfig, EggAppInfo, PowerPartial } from 'egg'; +const path = require('path'); export default (appInfo: EggAppInfo) => { const config = {} as PowerPartial; @@ -8,7 +9,7 @@ export default (appInfo: EggAppInfo) => { config.keys = appInfo.name + '_1600244957952_7142'; // add your egg config in here - config.middleware = []; + config.middleware = ['log']; config.cluster = { listen: { @@ -51,6 +52,22 @@ export default (appInfo: EggAppInfo) => { packages: [ '/root/zyz/web-server/package.json' ], }; + config.customLogger = { + linkLogger: { + file: path.join(appInfo.root, 'logs/gm-server/link-log.log'), + formatter(meta) { + return `[${meta.level}] [${meta.date}] ${meta.message}`; + }, + }, + }; + + config.logrotator = { + filesRotateBySize: [ + path.join(appInfo.root, 'logs/link-log.log'), + ], + maxFileSize: 1024, + }; + // the return config will combines to EggAppConfig return { ...config, diff --git a/gm-server/config/config.isbn.ts b/gm-server/config/config.isbn.ts index 054c18e80..58d3aecd4 100644 --- a/gm-server/config/config.isbn.ts +++ b/gm-server/config/config.isbn.ts @@ -1,4 +1,5 @@ import { EggAppConfig, EggAppInfo, PowerPartial } from 'egg'; +const path = require('path'); export default (appInfo: EggAppInfo) => { const config = {} as PowerPartial; @@ -8,7 +9,7 @@ export default (appInfo: EggAppInfo) => { config.keys = appInfo.name + '_1600244957952_7142'; // add your egg config in here - config.middleware = []; + config.middleware = ['log']; config.cluster = { listen: { @@ -47,6 +48,22 @@ export default (appInfo: EggAppInfo) => { packages: [ '/root/zyz/web-server/package.json' ], }; + config.customLogger = { + linkLogger: { + file: path.join(appInfo.root, 'logs/gm-server/link-log.log'), + formatter(meta) { + return `[${meta.level}] [${meta.date}] ${meta.message}`; + }, + }, + }; + + config.logrotator = { + filesRotateBySize: [ + path.join(appInfo.root, 'logs/link-log.log'), + ], + maxFileSize: 1024, + }; + // the return config will combines to EggAppConfig return { ...config, diff --git a/gm-server/config/config.local.ts b/gm-server/config/config.local.ts index 00b1d5bf9..a2f803652 100644 --- a/gm-server/config/config.local.ts +++ b/gm-server/config/config.local.ts @@ -1,4 +1,5 @@ import { EggAppConfig, EggAppInfo, PowerPartial } from 'egg'; +const path = require('path'); export default (appInfo: EggAppInfo) => { const config = {} as PowerPartial; @@ -8,7 +9,7 @@ export default (appInfo: EggAppInfo) => { config.keys = appInfo.name + '_1600244957952_7142'; // add your egg config in here - config.middleware = []; + config.middleware = ['log']; config.cluster = { listen: { @@ -51,6 +52,22 @@ export default (appInfo: EggAppInfo) => { packages: [ '/root/zyz/web-server/package.json' ], }; + config.customLogger = { + linkLogger: { + file: path.join(appInfo.root, 'logs/gm-server/link-log.log'), + formatter(meta) { + return `[${meta.level}] [${meta.date}] ${meta.message}`; + }, + }, + }; + + config.logrotator = { + filesRotateBySize: [ + path.join(appInfo.root, 'logs/link-log.log'), + ], + maxFileSize: 1024, + }; + // the return config will combines to EggAppConfig return { ...config, diff --git a/gm-server/config/config.monitor.ts b/gm-server/config/config.monitor.ts index eb6506fd0..77ebd051d 100644 --- a/gm-server/config/config.monitor.ts +++ b/gm-server/config/config.monitor.ts @@ -1,4 +1,5 @@ import { EggAppConfig, EggAppInfo, PowerPartial } from 'egg'; +const path = require('path'); export default (appInfo: EggAppInfo) => { const config = {} as PowerPartial; @@ -8,7 +9,7 @@ export default (appInfo: EggAppInfo) => { config.keys = appInfo.name + '_1600244957952_7142'; // add your egg config in here - config.middleware = []; + config.middleware = ['log']; config.cluster = { listen: { @@ -47,6 +48,22 @@ export default (appInfo: EggAppInfo) => { packages: [ '/root/zyz/web-server/package.json' ], }; + config.customLogger = { + linkLogger: { + file: path.join(appInfo.root, 'logs/gm-server/link-log.log'), + formatter(meta) { + return `[${meta.level}] [${meta.date}] ${meta.message}`; + }, + }, + }; + + config.logrotator = { + filesRotateBySize: [ + path.join(appInfo.root, 'logs/link-log.log'), + ], + maxFileSize: 1024, + }; + // the return config will combines to EggAppConfig return { ...config, diff --git a/gm-server/typings/app/middleware/index.d.ts b/gm-server/typings/app/middleware/index.d.ts index 18f04e908..3531336ff 100644 --- a/gm-server/typings/app/middleware/index.d.ts +++ b/gm-server/typings/app/middleware/index.d.ts @@ -2,10 +2,12 @@ // Do not modify this file!!!!!!!!! import 'egg'; +import ExportLog from '../../../app/middleware/log'; import ExportTokenParser from '../../../app/middleware/tokenParser'; declare module 'egg' { interface IMiddleware { + log: typeof ExportLog; tokenParser: typeof ExportTokenParser; } } diff --git a/package.json b/package.json index 0a612e4cb..683590a6c 100644 --- a/package.json +++ b/package.json @@ -15,10 +15,10 @@ "mongoose-lean-getters": "^0.1.2", "mongoose-lean-virtuals": "^0.7.6", "mongoose-transactions": "^1.1.4", + "request": "^2.88.2", "request-promise": "^4.2.6", "underscore": "^1.12.0" }, - "devDependencies": {}, "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, diff --git a/web-server/app/middleware/parmsDecode.ts b/web-server/app/middleware/parmsDecode.ts index d9c9bb72c..3201fb32b 100644 --- a/web-server/app/middleware/parmsDecode.ts +++ b/web-server/app/middleware/parmsDecode.ts @@ -1,4 +1,5 @@ import { ENCRYPT_KEY, ENCRYPT_IV } from '@consts'; +import { genCode } from 'app/pubUtils/util'; import { Context } from 'egg'; const crypto = require('crypto'); const isJSON = require('koa-is-json'); @@ -21,6 +22,7 @@ module.exports = options => { return async function parmsDecode(ctx: Context, next) { let m = ctx.request.url.indexOf("/dev"); let n = ctx.request.url.indexOf("/web"); + ctx.logcode = genCode(10); if(m == 0 || n == 0) { await next(); return; @@ -47,17 +49,27 @@ module.exports = options => { try { ctx.request.body = JSON.parse(decodeStr); console.log('req body', ctx.request.body); + ctx.service.utils.log('INFO', `[${ctx.request.url}] [${ctx.logcode}] request: ${JSON.stringify(ctx.request.body)}`) } catch (e) { console.error('parms parse err'); + ctx.service.utils.log('ERROR', `[${ctx.request.url}] [${ctx.logcode}] request: parms parse err`) + } - await next(); + try{ + await next(); + } catch(e) { + ctx.service.utils.log('ERROR', `[${ctx.request.url}] [${ctx.logcode}] err: ${e.stack}`); + throw e; + } const resBody = ctx.body; console.log('return value:', JSON.stringify(resBody)); if (isJSON(resBody)) { ctx.body = { result: aesEncrypt(JSON.stringify(resBody), ENCRYPT_KEY, ENCRYPT_IV) }; + ctx.service.utils.log('INFO', `[${ctx.request.url}] [${ctx.logcode}] res: ${JSON.stringify(resBody)}`) } else { ctx.body = { result: aesEncrypt(JSON.stringify({ status: 3, data: 'internal err' }), ENCRYPT_KEY, ENCRYPT_IV) }; + ctx.service.utils.log('ERROR', `[${ctx.request.url}] [${ctx.logcode}] res: ${resBody}`) } }; }; diff --git a/web-server/app/middleware/tokenParser.ts b/web-server/app/middleware/tokenParser.ts index 45d170b6d..ba96712f8 100644 --- a/web-server/app/middleware/tokenParser.ts +++ b/web-server/app/middleware/tokenParser.ts @@ -20,6 +20,8 @@ module.exports = () => { ctx.userCode = user.userCode; ctx.pkgName = user.pkgName; ctx.tel = user.tel; + ctx.service.utils.log('INFO', `[${ctx.request.url}] [${ctx.logcode}] user: ${user.uid}`); + await next(); }; }; diff --git a/web-server/app/service/Utils.ts b/web-server/app/service/Utils.ts index e0f261703..139b08ba9 100644 --- a/web-server/app/service/Utils.ts +++ b/web-server/app/service/Utils.ts @@ -54,4 +54,18 @@ export default class Utils extends Service { public unlockFigure(roleId: string, conditions: {type: number, paramHid?: number, paramFavourLv?: number, paramSkinId?: number}[], role?: RoleType) { return unlockFigure(roleId, conditions, role); } + + public log(level: 'DEBUG'|'INFO'|'WARN'| 'ERROR', message: string) { + const log = this.app.loggers.get('linkLogger'); + + if(level == 'DEBUG') { + log.error(`${message}`); + } else if (level == 'INFO') { + log.info(`${message}`); + } else if (level == 'WARN') { + log.warn(`${message}`); + } else if (level == "ERROR") { + log.error(`${message}`); + } + } } diff --git a/web-server/config/config.alpha.ts b/web-server/config/config.alpha.ts index 254a60d44..f53be40c1 100644 --- a/web-server/config/config.alpha.ts +++ b/web-server/config/config.alpha.ts @@ -47,7 +47,21 @@ export default (appInfo: EggAppInfo) => { dir: path.join(appInfo.baseDir, '/app/public'), }; + config.customLogger = { + linkLogger: { + file: path.join(appInfo.root, 'logs/web-server/link-log.log'), + formatter(meta) { + return `[${meta.level}] [${meta.date}] ${meta.message}`; + }, + }, + }; + config.logrotator = { + filesRotateBySize: [ + path.join(appInfo.root, 'logs/link-log.log'), + ], + maxFileSize: 1024, + }; // add your special config in here const bizConfig = { sourceUrl: `https://github.com/eggjs/examples/tree/master/${appInfo.name}`, diff --git a/web-server/config/config.default.ts b/web-server/config/config.default.ts index 20f432b36..d025f09db 100644 --- a/web-server/config/config.default.ts +++ b/web-server/config/config.default.ts @@ -53,7 +53,22 @@ export default (appInfo: EggAppInfo) => { appSecret: 'a48ad5ca44e2d02cbd7f4c0326fa3101', error_log: [ '/root/logs/zyz/zyz-web.log', '/root/logs/zyz/common-error.log', '/root/logs/zyz/egg-agent.log' ], }; + + config.customLogger = { + linkLogger: { + file: path.join(appInfo.root, 'logs/web-server/link-log.log'), + formatter(meta) { + return `[${meta.level}] [${meta.date}] ${meta.message}`; + }, + }, + }; + config.logrotator = { + filesRotateBySize: [ + path.join(appInfo.root, 'logs/link-log.log'), + ], + maxFileSize: 1024, + }; // add your special config in here const bizConfig = { sourceUrl: `https://github.com/eggjs/examples/tree/master/${appInfo.name}`, diff --git a/web-server/config/config.dev.ts b/web-server/config/config.dev.ts index 688581cc4..b5b6654d9 100644 --- a/web-server/config/config.dev.ts +++ b/web-server/config/config.dev.ts @@ -46,7 +46,21 @@ export default (appInfo: EggAppInfo) => { prefix: '/', dir: path.join(appInfo.baseDir, '/app/public'), }; + config.customLogger = { + linkLogger: { + file: path.join(appInfo.root, 'logs/web-server/link-log.log'), + formatter(meta) { + return `[${meta.level}] [${meta.date}] ${meta.message}`; + }, + }, + }; + config.logrotator = { + filesRotateBySize: [ + path.join(appInfo.root, 'logs/link-log.log'), + ], + maxFileSize: 1024, + }; // add your special config in here const bizConfig = { diff --git a/web-server/config/config.isbn.ts b/web-server/config/config.isbn.ts index 4f1e34161..925ca273c 100644 --- a/web-server/config/config.isbn.ts +++ b/web-server/config/config.isbn.ts @@ -47,7 +47,21 @@ export default (appInfo: EggAppInfo) => { dir: path.join(appInfo.baseDir, '/app/public'), }; + config.customLogger = { + linkLogger: { + file: path.join(appInfo.root, 'logs/web-server/link-log.log'), + formatter(meta) { + return `[${meta.level}] [${meta.date}] ${meta.message}`; + }, + }, + }; + config.logrotator = { + filesRotateBySize: [ + path.join(appInfo.root, 'logs/link-log.log'), + ], + maxFileSize: 1024, + }; // add your special config in here const bizConfig = { sourceUrl: `https://github.com/eggjs/examples/tree/master/${appInfo.name}`, diff --git a/web-server/config/config.local.ts b/web-server/config/config.local.ts index 62fa1e623..14657d140 100644 --- a/web-server/config/config.local.ts +++ b/web-server/config/config.local.ts @@ -40,13 +40,28 @@ export default (appInfo: EggAppInfo) => { }, }; - config.decodeParm = false; + config.decodeParm = true; config.static = { prefix: '/', dir: path.join(appInfo.baseDir, '/app/public'), }; + config.customLogger = { + linkLogger: { + file: path.join(appInfo.root, 'logs/web-server/link-log.log'), + formatter(meta) { + return `[${meta.level}] [${meta.date}] ${meta.message}`; + }, + }, + }; + + config.logrotator = { + filesRotateBySize: [ + path.join(appInfo.root, 'logs/link-log.log'), + ], + maxFileSize: 1024, + }; // add your special config in here const bizConfig = { diff --git a/web-server/config/config.monitor.ts b/web-server/config/config.monitor.ts index d67df0f79..a2cba448c 100644 --- a/web-server/config/config.monitor.ts +++ b/web-server/config/config.monitor.ts @@ -47,7 +47,21 @@ export default (appInfo: EggAppInfo) => { dir: path.join(appInfo.baseDir, '/app/public'), }; + config.customLogger = { + linkLogger: { + file: path.join(appInfo.root, 'logs/web-server/link-log.log'), + formatter(meta) { + return `[${meta.level}] [${meta.date}] ${meta.message}`; + }, + }, + }; + config.logrotator = { + filesRotateBySize: [ + path.join(appInfo.root, 'logs/link-log.log'), + ], + maxFileSize: 1024, + }; // add your special config in here const bizConfig = { sourceUrl: `https://github.com/eggjs/examples/tree/master/${appInfo.name}`, diff --git a/web-server/package.json b/web-server/package.json index 1b3292669..1f1661e22 100644 --- a/web-server/package.json +++ b/web-server/package.json @@ -34,6 +34,7 @@ "egg-scripts": "^2.6.0", "egg-view-nunjucks": "^2.2.0", "egg-xtransit": "^1.2.2", + "moment": "^2.29.1", "mongoose-transactions": "^1.1.4", "reflect-metadata": "^0.1.13", "request": "^2.88.2",