1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
²PZc@s<ddlTddlZddlTdZdZdZdZeZda
d„Z d„Z d„Z d    „ZddlZdd
lmZmZdd lmZmZdd lmZmZdd lmZddlZedƒZddlZddlZddl m!Z!ddl"m#Z#d„Z$dejfd„ƒYZ%dS(iÿÿÿÿ(t*Ns%Y%m%d-%H-%M-%S.txttHt LogDBSaveFilecCstdkrtƒantS(N(tg_LogDBFileSaveMgrtNonet CFileSaveMgr(((s.\\LogCtrlDB.pytGetLogDBFileSaveMgrs  cCs$tdkrdStjƒdadS(N(RRtRelease(((s.\\LogCtrlDB.pytReleaseLogDBFileSaveMgrs
 
cCsltjjt|ƒ}tjj|ƒtkr=tj|ƒntƒj|tjj||ƒt    t
t ƒdS(N( tostpathtjoint LOG_BASEPATHtexiststFalsetmakedirsRtAddTypetLOG_WHENt
LOG_SUFFIXtLOG_BACKUPCOUNT(tTypet curTypePath((s.\\LogCtrlDB.pytAddFileSaveType%scCs?tƒ}|j|ƒtkr+t|ƒn|j||ƒdS(N(RtHasTypeRRtWrite(RtDatatSaveMgr((s.\\LogCtrlDB.pytWriteLogDBToFile+s     (tCommFunctmylog(t CommonDefineterror(tRecvPackProtocoltSendPackProtocol(tDataServerLogDatasConfig.DBConfig(tProjSpecialProcess(tEventShellProxycCs|tjtkrdSt|ƒ}tjrStjƒj|t|ƒ|t|ƒƒn%t    j
dt    j dƒ}t j |ƒdS(Nt DeployErrort(tDBConfigtLogDB_EventShell_SaveRtstrtEventShellEnableR$tGetEventShellProxyt SendEventExtlenRt    formatMsgt ERROR_NO_163RR%(tNameRtmsg((s.\\LogCtrlDB.pytDoEventShellSaveEs     +t    LogCtrlDBcBsûeZd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Z    d„Z
d    „Z d
„Z d „Z d „Zd „Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„ZRS(cCs†tjj|dd|ƒttjtjdƒtjg|jdd<|jt    j
t    j ƒ|j t    j t    jt    jƒt|_dS(NR3ii(tCtrlDBt__init__trangeRtgstSavePlayerLogtgstSavePlayerInfoLogOnLogInOfftgstGMToolCmdLogDBRequesttpriorityQueueListt    setServerR't    LOG_DB_IPt LOG_DB_PORTt setDataBaset LOG_DB_NAMEt
logdb_usert    logdb_pwdtTruetneedInit(tselft    ctrlDBMgr((s.\\LogCtrlDB.pyR5Rs cCss|jtƒ|jtƒtjdƒ|t}|jidd6ƒ|jiiidd6d6ttt    t    ƒdS(Ns"clear balance and line ip info ok!itTJGTimetIsOnlines$set(
tdrop_collectiontUCN_DBMapServerBalancetUCN_DBGateServerIPRtinfotUCN_DBPlayerInfoLogtremovetupdateRRB(RDtdbtcol((s.\\LogCtrlDB.pytOnDataServerInit\s    
cCs|jtƒtjdƒdS(Nsclear player login sign ok!(RHRLRRK(RDRO((s.\\LogCtrlDB.pytOnSavePlayerInfoClearLoginSignhs cCsÞ|t}tjƒ}d}|j|jƒ||jƒƒxt|jƒD]~}tj    ƒ}|j
|j |_ |j
|j |_ |j
|j |_ |j
|j|_|j
|j|_|j|ƒqKWtjdƒdS(NisUpdate server state ok!(tUCN_DBServerStateLogR ttagGDServerStatetreadDatat    getBuffert    getLengthtxrangetMapCntR"ttagDBServerStateLogt    MapServertMapIDtStatet RefreshTimetMapServerNumbertIPtadoCheckUpdateRtdebug(RDROtpackt
collectiontserverStateListtpostit serverState((s.\\LogCtrlDB.pytonSaveServerStatems
  c
Csxtjƒ}d}|j|jƒ||jƒƒtjƒ}|j|_|j|_|j    |_    |j
|_
|j |_ |j |_ |j |_ |j|_tj|ddtjtjƒ|_|jdkrùtjd|jƒƒtjƒ|_n|jdkrtd|jƒƒdSdStjr^trHtd|jƒƒq”td|jƒƒn6tjr}td|jƒƒn|t }|j!|ƒ|jdks²|jdkr0tj"ƒ}tj|d    dtj#tj$ƒ|_|j|_|j|_|j
|_
|j |_ |j |_ |j j%ƒ}d
}    |j&|    ƒ}|t'd
ƒ}
|dksp|
t'|ƒkr|d|_(nt)j*||
dƒ|_(|j(t+j,ks¹|j(t+j-kr0tjrôtrÞtd    |jƒƒq*td    |jƒƒq-tjrtd    |jƒƒq-|t.}|j!|ƒq0n|jd krtj/ƒ} tj|d d tj0tj1ƒ| _2|j
| _
| j3|j ƒ|j    | _    |j| _tjrÞtrÈtd | jƒƒqtd | jƒƒqtjrýtd | jƒƒq|t4}| j!|ƒn|jd ks5|jdkrStj5ƒ} tj|ddtj6tj7ƒ| _|j
| _
|j    | _    |j| _| j3|j j8dƒdƒ|jd krÁd| _ n |j | _ t'| j ƒ| _tjrtrtd| jƒƒqPtd| jƒƒqStjr9td| jƒƒqS|t9}| j!|ƒn|jdkrttj:ƒ} |j| _;|j | _<|j | _=| j>|j ƒtj|ddtj?tj@ƒ| _Atjrtrëtd| jƒƒqqtd| jƒƒqttjr td| jƒƒqt|tB}| j!|ƒtCkrttDjEdtDjFd| jƒƒ}tjD|ƒqtndS(NittagDBPlayerLogtLogIndexsTime Error, tagDBPlayerLog = %siPttagDBCreateRolei<iˆttagDBServerMoneyLogs
moneytype=i˜ttagDBApexKickLogt KickLogIndexišttagDBServerKickLogs|s    Apex Kickist    SvrStatustfldIndexRs$SvrStatus ADOInsert Error, Info = %s(GR ttagDBServerLogRectReadDataRVRWR"RjtOpertTimeR\tPlayerIDtTagIDtPartMsgtMsgLent MangoDBCommontseqR'tLOGDB_LOGINDEX_FEEDtLOGDB_LOGINDEX_STEPRkRtwarningt OutputStringttimeR2t    getRecordtIsOpenLogDBFileSavetUSE_OUTPUTSTRINGRt
dumpStringR(tUCN_DBPlayerLogt    adoInsertRmt'LOGDB_tagDBServerMoneyLog_LogIndex_FEEDt'LOGDB_tagDBServerMoneyLog_LogIndex_STEPtlowertfindR-t    MoneyTypeRtToIntDefRtTYPE_Price_Gold_MoneytTYPE_Price_Gold_PapertUCN_DBServerMoneyLogRnt(LOGDB_tagDBApexKickLog_KickLogIndex_FEEDt(LOGDB_tagDBApexKickLog_KickLogIndex_STEPRotSetAccIDtUCN_DBApexKickLogRpt&LOGDB_tagDBServerKickLog_LogIndex_FEEDt&LOGDB_tagDBServerKickLog_LogIndex_STEPtsplittUCN_DBServerKickLogRqtfldDatetfldLinetfldCountt
SetfldInfotLOGDB_SvrStatus_fldIndex_FEEDtLOGDB_SvrStatus_fldIndex_STEPRrt UCN_SvrStatusRRR.t ERROR_NO_49(RDRORctrecvPackRft    playerLogRdtMoneyLogtcurMsgtfindStrtfindpost ApexKickLogt ServerKickLogt SvrStatusLogR1((s.\\LogCtrlDB.pytonSavePlayerLog|sâ                  
        $        
            
              
            
"cCs]tjƒ}|j|jƒd|jƒƒ|t}|j|ƒtjd|j    ƒƒdS(NisSave create player log ok:%s(
R"ttagDBPlayerInfoLogCreateRoleRURVRWRLRaRRbt outputString(RDRORctdbPlayerInfoLogCreateRoleRd((s.\\LogCtrlDB.pytonSavePlayerInfoLogOnCreates
 
 cCs]tjƒ}|j|jƒd|jƒƒ|t}|j|ƒtjd|j    ƒƒdS(NisSave player Login log ok:%s(
R"ttagDBPlayerInfoLogRoleLoginRURVRWRLRaRRbR­(RDRORctdbPlayerInfoLogOnLoginRd((s.\\LogCtrlDB.pytonSavePlayerInfoLogOnLogin!s
 
 cCs]tjƒ}|j|jƒd|jƒƒ|t}|j|ƒtjd|j    ƒƒdS(NisSave player LogOff log ok:%s(
R"ttagDBPlayerLogInfoOnLogOffRURVRWRLRaRRbR­(RDRORctdbPlayerInfoLogOnLogOffRd((s.\\LogCtrlDB.pytonSavePlayerInfoLogOnLogOff)s
 
 cCs]tjƒ}|j|jƒd|jƒƒ|t}|j|ƒtjd|j    ƒƒdS(NisSave player LogInOff log ok:%s(
R"ttagDBPlayerLogInfoOnLogInOffRURVRWRLRaRRbR­(RDRORctdbPlayerInfoLogOnLogInOffRd((s.\\LogCtrlDB.pytonSavePlayerInfoLogOnLogInOff1s
 
 cCs]tjƒ}|j|jƒd|jƒƒ|t}|j|ƒtjd|j    ƒƒdS(Nis!Save player OnForbidden log ok:%s(
R"ttagDBPlayerInfoLogForbiddenRURVRWRLRaRRbR­(RDRORctdbPlayerInfoLogOnForbiddenRd((s.\\LogCtrlDB.pytonSavePlayerInfoLogOnForbidden:s
 
 cCsÛtjƒ}|j|jƒd|jƒƒtj|ddtjtj    ƒ|_
tj rŠt rtt d|jƒƒq×t d|jƒƒnMtjr©td|jƒƒn.|t}|j|ƒtjd|jƒƒdS(NittagAccForbiddenLogtStateIDsSave AccForbiddenLog ok:%s(R"R¼RURVRWR|R}R't"LOGDB_AccForbiddenLog_StateID_FEEDt"LOGDB_AccForbiddenLog_StateID_STEPR½R„R…RR†R(R2RƒtUCN_AccForbiddenLogRˆRRbR­(RDRORctdbAccForbiddenLogRd((s.\\LogCtrlDB.pytonAccForbiddenLogDs         
 cCsxtjdƒtjƒ}|j|jƒd|jƒƒtjƒ}|j    |_    |t
}|j |ƒtjdƒdS(NsDelete line info begin...isDelete line info end.( RRKR ttagDBDelLineInfoRtRVRWR"ttagDBGateServerIPtLineIDRJtadoDeleteByIndex(RDRORct dbDelLineInfotdbGateServerIPRd((s.\\LogCtrlDB.pytonDelLineInfoByLineIDYs    
 cCsttjdƒtjƒ}|j|jƒd|jƒƒ|jjdƒ}t    |ƒdkrmtj
dƒdS|t }t j ƒ}|j|_|j|ƒs¢dSx¾|D]¶}|dkrÁq©ntj|ddtjtjƒ|_|j|_|j|_|j|_|j|_|j|ƒ|j|_|j|_|j|_|j|_|j|ƒq©WtjdƒdS(    NsRefresh GateServer IP begin...is
srungate refresh ips is nullR&RÄRksRefresh GateServer IP end.( RRbR ttagRefreshGateServerIPRtRVRWR`R˜R-R€RJR"RÄtLineNORÅRÆR|R}R't%LOGDB_tagDBGateServerIP_LogIndex_FEEDt%LOGDB_tagDBGateServerIP_LogIndex_STEPRkR^tRouteServerIndextGateServerIndextSetIPtPortt CurPlayerCntt MaxPlayerCnttLineTypeRˆ(RDRORctrefreshGateServerIPtipsRdRÈtip((s.\\LogCtrlDB.pytonRefreshGateServerIPes:   
             cCs]tjƒ}|j|jƒd|jƒƒ|t}|j|ƒtjd|j    ƒƒdS(NisSave GMCommandListLog ok:%s(
R"ttagDBGMCommandLogRURVRWtUCN_DBGMCommandLogRˆRRbR­(RDRORctdbGMCommandLogRd((s.\\LogCtrlDB.pytonGMCommandListLogs
 
 cCs‚tjƒ}|j|jƒd|jƒƒtjƒ}|j|jd|j    ƒ|t
}|j |ƒt j d|jƒƒdS(Nis&Save GMCommandListLog  SetResult ok:%s(R ttagBDStringTypeSendRtRVRWR"ttagDBGMCommandResultLogRURtDataLenRÚRaRRbR­(RDRORctdataPacktdbGMCommandResultLogRd((s.\\LogCtrlDB.pytonGMCommandResult–s  
 cCsÜtjƒ}|j|jƒd|jƒƒtjƒ}|j|jd|j    ƒt
j r‹t rut d|jƒƒqØt d|jƒƒnMt
jrªtd|jƒƒn.|t}|j|ƒtjd|jƒƒdS(NittagDBGameFunctionEventLogsSave FunctionGradeLog  ok:%s(R RÝRtRVRWR"RãRURRßR'R„R…RR†R(R2RƒtUCN_DBGameFunctionEventLogRˆRRbR­(RDRORcRàtdbFunctionGradeLogRd((s.\\LogCtrlDB.pytonFunctionGradeLog¡s          
 cCstjƒ}|j|jƒd|jƒƒtjƒ}|j|jd|j    ƒt
j |ddt j t jƒ|_t jr¯tr™td|jƒƒqütd|jƒƒnMt jrÎtd|jƒƒn.|t}|j|ƒtjd|jƒƒtj|_|j|jƒƒdS(NittagDBPlayerSaveCoinLogRksSave FunctionGradeLog  ok:%s( R RÝRtRVRWR"RçRURRßR|R}R't*LOGDB_tagDBPlayerSaveCoinLog_LogIndex_FEEDt*LOGDB_tagDBPlayerSaveCoinLog_LogIndex_STEPRkR„R…RR†R(R2RƒtUCN_DBPlayerSaveCoinLogRˆRRbR­RtgstUpdateTotalSavePointRt sendDBRequest(RDRORcRàtdbPlayerSaveCoinLogRd((s.\\LogCtrlDB.pytonPlayerSaveCoinLogµs$          
  cCstjƒ}|j|jƒd|jƒƒtjƒ}|j|jd|j    ƒt
j |ddt j t jƒ|_t jr¯tr™td|jƒƒqütd|jƒƒnMt jrÎtd|jƒƒn.|d}|j|ƒtjd|jƒƒdS(NittagDBHugeTradet
TradeIndexsSave HugeTradeLog  ok:%s(R RÝRtRVRWR"RïRURRßR|R}R't$LOGDB_tagDBHugeTrade_TradeIndex_FEEDt$LOGDB_tagDBHugeTrade_TradeIndex_STEPRðR„R…RR†R(R2RƒRˆRRbR­(RDRORcRàtdbHugeTradeLogRd((s.\\LogCtrlDB.pytonHugeTradeLogÏs           
 cCs·tjƒ}|j|jƒd|jƒƒtjrftrPtd|j    ƒƒq³td|jƒƒnMtj
r…t d|j ƒƒn.|t }|j|ƒtjd|jƒƒdS(NittagPetExpiationLogsSave PetExpiationLog ok:%s(R"RõRURVRWR'R„R…RR†R(R2RƒtUCN_PetExpiationLogRˆRRbR­(RDRORctdbPetExpiationLogRd((s.\\LogCtrlDB.pytonGetPetExpiationLogæs         
 cCs·tjƒ}|j|jƒd|jƒƒtjrftrPtd|j    ƒƒq³td|jƒƒnMtj
r…t d|j ƒƒn.|t }|j|ƒtjd|jƒƒdS(NittagExpiationLogsSave ExpiationLog ok:%s(R"RùRURVRWR'R„R…RR†R(R2RƒtUCN_ExpiationLogRˆRRbR­(RDRORctdbExpiationLogRd((s.\\LogCtrlDB.pytonGetExpiationLogøs         
 cCstjƒ}|j|jƒd|jƒƒtjƒ}|j|jd|j    ƒt
j |ddt j t jƒ|_t jr¯tr™td|jƒƒqütd|jƒƒnMt jrÎtd|jƒƒn.|t}|j|ƒtjd|jƒƒdS(NittagDBTalkTraceLogRksSave DBTalkTraceLog  ok:%s(R RÝRtRVRWR"RýRURRßR|R}R't%LOGDB_tagDBTalkTraceLog_LogIndex_FEEDt%LOGDB_tagDBTalkTraceLog_LogIndex_STEPRkR„R…RR†R(R2RƒtUCN_DBTalkTraceLogRˆRRbR­(RDRORcRàtdbDBTalkTraceLogRd((s.\\LogCtrlDB.pytonAddPlayerTalkLog
s           
 cCs·tjƒ}|j|jƒd|jƒƒtjrftrPtd|j    ƒƒq³td|jƒƒnMtj
r…t d|j ƒƒn.|t }|j|ƒtjd|jƒƒdS(NittagAccTransactionLogsSave ItemTransactionLog ok:%s(R"RRURVRWR'R„R…RR†R(R2RƒtUCN_AccTransactionLogRˆRRbR­(RDRORctdbAccTransactionLogRd((s.\\LogCtrlDB.pytonItemTransactionLog!s         
 cCsÜtjƒ}|j|jƒd|jƒƒtjƒ}|j|jd|j    ƒt
j r‹t rut d|jƒƒqØt d|jƒƒnMt
jrªtd|jƒƒn.|t}|j|ƒtjd|jƒƒdS(Nit tagCashRecLogsSave tagCashRecLog ok:%s(R RÝRtRVRWR"RRURRßR'R„R…RR†R(R2RƒtUCN_CashRecLogRˆRRbR­(RDRORcRàt dbCashRecLogRd((s.\\LogCtrlDB.pyt onCashRecLog2s          
 cCs=ytjƒ}|j|jƒd|jƒƒtjƒ}|j|jd|j    ƒt
j |ddt j t jƒ|_t jr²trœtd|jƒƒqÿtd|jƒƒnMt jrÑtd|jƒƒn.|t}|j|ƒtjd|jƒƒWn6tjdtjdtj ƒƒ}tj|ƒnXdS(NittagDBCoinChangeLogRksSave tagDBCoinChangeLog ok:%sRs!Save tagDBCoinChangeLog failed:%s(!R RÝRtRVRWR"R RURRßR|R}R't tagDBCoinChangeLog_LogIndex_FEEDt tagDBCoinChangeLog_LogIndex_STEPRkR„R…RR†R(R2RƒtUCN_DBCoinChangeLogRˆRRbR­RR.t ERROR_NO_50t    tracebackt
format_exc(RDRORcRàtdbCoinChangeLogRdR1((s.\\LogCtrlDB.pytonCoinChangeLogGs(          
 "cCsRytj||ƒWn7tjdtjdtjƒƒ}tj|ƒtSXt    S(NRsAOnGMToolCmdLogDBRequest Catch a unexpetcted exception, error = %s(
R#tOnGMToolCmdLogDBRequestRR.t ERROR_NO_172RRRRRB(RDRORcR1((s.\\LogCtrlDB.pyRcs" cCsštjdƒ|jjdƒ}|jƒ|jƒtjdƒtjdƒ|jjdƒ}|jƒ|j|ƒ|jƒtjdƒt|_dS(NsClear login sign...tgstSavePlayerInfoClearLoginSignsClear login sign ok!sClear line info...tgstDataServerInitsClear line info ok!(    RRKtfuncGradeManagert GetFuncGradetStarttEndRQRRC(RDROt    funcGrade((s.\\LogCtrlDB.pytInitms 
 
 
 
 cCsi|jr|j|ƒtSd}tj|jƒ|ƒ\}}|tjkrQtS|tjkrš|j    j
dƒ}|j ƒ|j ||ƒ|j ƒtS|tjkrã|j    j
dƒ}|j ƒ|j||ƒ|j ƒtS|tjkr,|j    j
dƒ}|j ƒ|j||ƒ|j ƒtS|tjkru|j    j
dƒ}|j ƒ|j||ƒ|j ƒtS|tjkr¾|j    j
dƒ}|j ƒ|j||ƒ|j ƒtS|tjkr|j    j
dƒ}|j ƒ|j||ƒ|j ƒtS|tjkrP|j    j
dƒ}|j ƒ|j||ƒ|j ƒtS|tjkr™|j    j
d    ƒ}|j ƒ|j||ƒ|j ƒtS|tjkrâ|j    j
d
ƒ}|j ƒ|j||ƒ|j ƒtS|tjkr+|j    j
d ƒ}|j ƒ|j||ƒ|j ƒtS|tj krt|j    j
d ƒ}|j ƒ|j!||ƒ|j ƒtS|tj"kr½|j    j
d ƒ}|j ƒ|j#||ƒ|j ƒtS|tj$kr|j    j
dƒ}|j ƒ|j%||ƒ|j ƒtS|tj&krO|j    j
dƒ}|j ƒ|j'||ƒ|j ƒtS|tj(kr˜|j    j
dƒ}|j ƒ|j)||ƒ|j ƒtS|tj*krá|j    j
dƒ}|j ƒ|j+||ƒ|j ƒtS|tj,kr*|j    j
dƒ}|j ƒ|j-||ƒ|j ƒtS|tj.krs|j    j
dƒ}|j ƒ|j/||ƒ|j ƒtS|tj0kr¼|j    j
dƒ}|j ƒ|j1||ƒ|j ƒtS|tj2kr|j    j
dƒ}|j ƒ|j3||ƒ|j ƒtS|tj4krN|j    j
dƒ}|j ƒ|j5||ƒ|j ƒtSt6j7d|j8ƒƒtS(NiR7tgstSavePlayerInfoLogOnCreatetgstSavePlayerInfoLogOnLogintgstSavePlayerInfoLogOnLogOffR8tgstSavePlayerInfoLogOnForbiddentgstRefreshGateServerIPtgstDelLineInfoByLineIDtgstAccForbiddenLogtgstGMCommandListLogtgstGMCommandResulttgstFunctionGradetgstPlayerSaveCoinLogt gstHugeTradetgstGetPetExpiationLogtgstGetExpiationLogtgstAddPlayerTalkLogtgstItemTransactionLogt gstCashRecLogtgstCoinChangeLogR9s%s not processed!(9RCRRBRtReadBYTERVRtgstSaveServerStateR7RRRR«RRR¯RR²R RµR8R¸R!R»R"RØR#RÉR$RÂR%RÜR&RâR'RæR(RîR)RôR*RøR+RüR,RR-RR.R
R/RR9RRRbR­(RDRORcRft requestTypeR((s.\\LogCtrlDB.pytrequestLogicProcess~s      
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
(t__name__t
__module__R5RQRRRiR«R¯R²RµR¸R»RÂRÉRØRÜRâRæRîRôRøRüRRR
RRRR3(((s.\\LogCtrlDB.pyR3Qs6    
                 Ÿ                        
             (                                                     
    (&tCommon.FileSaveMgrR    tCollections.CollectionDefineRRRR RBR…RRRRRRR4tCommonRRtDBCommonRRtProtocolR R!t CollectionsR"R|t
__import__R'R‚RtGMToolLogicProcessR#t
EventShellR$R2R3(((s.\\LogCtrlDB.pyt<module>
s2