diff --git a/src/gameLog.ts b/src/gameLog.ts index 65e62be..255e644 100644 --- a/src/gameLog.ts +++ b/src/gameLog.ts @@ -1,6 +1,15 @@ import { Db, MongoClient } from "mongodb"; let logDB:Db; +let errorLogDB:Db; + +/** + * 是否是G123的测试服 + */ +function isG123stg(){ + return G.config.mongodbUrl.indexOf('.stg.')!=-1; +} + async function connGameLogDB() { console.log('connect gamelog mongodb ......'); let logDBUrl:string; @@ -14,9 +23,39 @@ async function connGameLogDB() { maxIdleTimeMS: 5*60*1000 }); logDB = client.db(`gameLog${G.config.serverId}`); + errorLogDB = client.db(`nodeJsErrorLog`); + return logDB; } + +process.on('uncaughtException',function(err:Error){ + addErrorLog((err.stack).toString()); +}) + +process.on('unhandledRejection', function (err:Error, promise) { + addErrorLog((err.stack).toString()); +}) + +async function addErrorLog(errData:any){ + try{ + //g123测试版连接不上db,不抓取 + if(isG123stg())return; + let log = { + serverId : G.config.serverId, + pid : process.pid, + cTime : Math.floor(Date.now()/1000), + error: errData + } + if(!errorLogDB){ + await connGameLogDB(); + } + errorLogDB.collection('nodeJsErrorLog').insertOne(log); + }catch(e){ + console.error('addErrorLog',e); + } +} + /** * 增加游戏日志 * @param uid 玩家uid @@ -27,6 +66,9 @@ async function connGameLogDB() { export async function addGameLog(uid:string, type:string, req:any, data:any){ try{ + //g123测试版连接不上db,不抓取 + if(isG123stg())return; + if(!logDB){ await connGameLogDB(); } @@ -38,7 +80,6 @@ export async function addGameLog(uid:string, type:string, req:any, data:any){ } //事件时间 log['cTime'] = Math.floor(Date.now()/1000); - logDB.collection('gameLog').insertOne(log); }catch(e){ console.error('addGameLog',e);