init
This commit is contained in:
203
Gateway/common/log/log_def.h
Normal file
203
Gateway/common/log/log_def.h
Normal file
@@ -0,0 +1,203 @@
|
||||
#ifndef _LOG_TYPE_H_
|
||||
#define _LOG_TYPE_H_
|
||||
|
||||
using namespace SrvDef;
|
||||
// new
|
||||
enum LogMsgCmd
|
||||
{
|
||||
lmCounter = 1,
|
||||
lmInstall = 2,
|
||||
lmDau = 3,
|
||||
lmEconomy = 4,
|
||||
lmMilestone = 5,
|
||||
lmCounterDB = 6,
|
||||
lmPayment = 7,
|
||||
lmGameInfo = 8,
|
||||
lmOnline = 9, // 统计在线人数
|
||||
lmDcApiData = 10, //QQ统一数据平台接口
|
||||
lmDcApiDataList = 11, //QQ统一数据平台接口
|
||||
lmDcApiProto = 12, //QQ统一数据平台接口(接口6.20)
|
||||
lmTLog = 13, // 发送到TLog数据
|
||||
lmChat = 14, // 统计聊天信息
|
||||
lmDKMLog = 15, //多可梦日志报送
|
||||
};
|
||||
|
||||
enum LogFlagInter
|
||||
{
|
||||
lfiDB = 1, // 保存数据库
|
||||
lfiBI = 2, // 保存到BI
|
||||
lfiText = 4, // 保存到文本
|
||||
lfiIsPay = 8, // 是否充值的数据
|
||||
};
|
||||
|
||||
|
||||
|
||||
struct LDcApiLogTable
|
||||
{
|
||||
char key_[16];
|
||||
char value_[64];
|
||||
bool mustUrlencode_;
|
||||
};
|
||||
typedef Vector<LDcApiLogTable*, 128> LDcApiLogTableList;
|
||||
struct LDcApiData
|
||||
{
|
||||
char log_name_[128];
|
||||
short log_type_; // 见《DC_API_manual_C++_V2.1.pdf》中日志类型定义 : 0=经分数据上报;1=模调数据上报;4=反外挂数据上报
|
||||
char content_[2048];
|
||||
};
|
||||
|
||||
struct LDcApiProtoLog
|
||||
{
|
||||
//=====head=====
|
||||
char openId[128]; //即玩家帐号
|
||||
int domain; //平台ID
|
||||
int serverId;
|
||||
char svrip[32]; //服务器ip
|
||||
char userip[32]; //用户ip
|
||||
//=====end head=====
|
||||
|
||||
//===body=====
|
||||
int roleId;
|
||||
int protoId;
|
||||
int gameFeatrueId; //直接填写系统ID
|
||||
int protoType;
|
||||
int protoResult;
|
||||
//===end body====
|
||||
};
|
||||
|
||||
struct LCounter
|
||||
{
|
||||
ActorId actorid_;
|
||||
char aid_[64];
|
||||
char user_level_[32];
|
||||
char counter_[32];
|
||||
char value_[32];
|
||||
char extra_[128];
|
||||
char kingdom_[32];
|
||||
char phylum_[32];
|
||||
char classfield_[32];
|
||||
char family_[32];
|
||||
char genus_[128];
|
||||
bool save_db_; // 是否保存到本地数据库,这个已经没用
|
||||
int flag_;
|
||||
};
|
||||
|
||||
struct LInstall
|
||||
{
|
||||
char aid_[64];
|
||||
char source_[32];
|
||||
char affiliate_[32];
|
||||
char creative_[32];
|
||||
char family_[32];
|
||||
char genus_[32];
|
||||
char from_uid_[32];
|
||||
char extra_[32];
|
||||
int flag_;
|
||||
};
|
||||
|
||||
struct LDau
|
||||
{
|
||||
char aid_[64];
|
||||
char source_[32];
|
||||
char affiliate_[32];
|
||||
char creative_[32];
|
||||
char family_[32];
|
||||
char genus_[32];
|
||||
char ip_[32];
|
||||
char from_uid_[32];
|
||||
char extra_[32];
|
||||
int flag_;
|
||||
};
|
||||
|
||||
struct LEconomy
|
||||
{
|
||||
ActorId actorid_;
|
||||
char aid_[64];
|
||||
char currency_[32]; // currency type
|
||||
char amount_[32]; //numerical amount
|
||||
char value_[32]; // numerical value
|
||||
char kingdom_[32];
|
||||
char phylum_[32];
|
||||
char classfield_[32];
|
||||
char family_[32];
|
||||
char genus_[32];
|
||||
char extra_[128];
|
||||
char extra2_[32];
|
||||
char pf_[128];
|
||||
int flag_;
|
||||
char openkey_[512];
|
||||
char pfkey_[128];
|
||||
char pfid_[128];
|
||||
};
|
||||
|
||||
struct LMilestone
|
||||
{
|
||||
ActorId actorid_;
|
||||
char aid_[64];
|
||||
char milestone_[32];
|
||||
char value_[32];
|
||||
char extra_[32];
|
||||
int flag_;
|
||||
};
|
||||
|
||||
struct LPayment
|
||||
{
|
||||
ActorId actorId_;
|
||||
char aid_[64];
|
||||
int amount_;
|
||||
int value_;
|
||||
char kingdom_[32];
|
||||
char phylum_[32];
|
||||
char transactionid_[32];
|
||||
char extra_[32];
|
||||
int mstType_;
|
||||
int p1_;
|
||||
int p2_;
|
||||
int p3_;
|
||||
int p4_;
|
||||
int p5_;
|
||||
int ret_;
|
||||
int flag_;
|
||||
};
|
||||
|
||||
struct LGameInfo
|
||||
{
|
||||
char aid_[64];
|
||||
char user_level_[32];
|
||||
char value_[32];
|
||||
char extra_[32];
|
||||
char kingdom_[32];
|
||||
char phylum_[32];
|
||||
char classfield_[32];
|
||||
char family_[32];
|
||||
char genus_[32];
|
||||
int flag_;
|
||||
};
|
||||
|
||||
struct LChat
|
||||
{
|
||||
ActorId actorid_;
|
||||
char aid_[64];
|
||||
char name_[32];
|
||||
char ip_[32];
|
||||
char pf_[32];
|
||||
int type_;
|
||||
char toaid_[64];
|
||||
char toname_[32];
|
||||
char content_[1024];
|
||||
};
|
||||
|
||||
enum ChatType
|
||||
{
|
||||
ctSecret = 1, // 私聊,密语
|
||||
ctMail = 3,
|
||||
ctWorld = 4, // 世界,喇叭频道
|
||||
ctCamp = 5,
|
||||
ctGuild = 6, // 工会,帮派
|
||||
ctTeam = 7, // 队伍频道,5人
|
||||
ctNear = 8, // (取消)附近频道,同屏
|
||||
ctOther = 9,
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
641
Gateway/common/log/log_sender.cc
Normal file
641
Gateway/common/log/log_sender.cc
Normal file
@@ -0,0 +1,641 @@
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include "os_def.h"
|
||||
#include "_ast.h"
|
||||
|
||||
#include "x_tick.h"
|
||||
#include "x_lock.h"
|
||||
#include "container/queue_list.h"
|
||||
#include "net/base_socket.h"
|
||||
#include "share_util.h"
|
||||
#include "memory/buffer_allocator.h"
|
||||
#include "appitnmsg.h"
|
||||
#include "data_packet.hpp"
|
||||
#include "net/send_packet_pool.h"
|
||||
#include "net/work_socket.h"
|
||||
#include "net/net_client.h"
|
||||
#include "server_def.h"
|
||||
#include "log_def.h"
|
||||
#include "encrypt/CRC.h"
|
||||
#include "encrypt/Encrypt.h"
|
||||
#include "log_sender.h"
|
||||
|
||||
|
||||
|
||||
using namespace SrvDef;
|
||||
|
||||
LogSender::LogSender(int ServerType, int ServerIndex, char* ServerName) : NetClient("LogSender")
|
||||
{
|
||||
this->ServerType = ServerType;
|
||||
this->ServerIndex = ServerIndex;
|
||||
_STRNCPY_A(this->ServerName, ServerName);
|
||||
this->SetClientName(("logger server"));
|
||||
|
||||
stop_log_ = false;
|
||||
stop_counter_log_ = false;
|
||||
stop_economy_log_ = false;
|
||||
}
|
||||
|
||||
LogSender::LogSender() : NetClient("LogSender")
|
||||
{
|
||||
this->SetClientName(("logger server"));
|
||||
|
||||
stop_log_ = false;
|
||||
stop_counter_log_ = false;
|
||||
stop_economy_log_ = false;
|
||||
}
|
||||
|
||||
LogSender::~LogSender(void)
|
||||
{
|
||||
}
|
||||
|
||||
void LogSender::SetServerName(const char* sServerName)
|
||||
{
|
||||
_STRNCPY_S(ServerName, sServerName, ArrayCount(ServerName) - 1);
|
||||
ServerName[ArrayCount(ServerName) - 1] = 0;
|
||||
}
|
||||
int LogSender::GetLocalServerType()
|
||||
{
|
||||
return ServerType;
|
||||
}
|
||||
|
||||
const char* LogSender::GetLocalServerName()
|
||||
{
|
||||
return ServerName;
|
||||
}
|
||||
|
||||
int LogSender::GetLocalServerIndex()
|
||||
{
|
||||
return ServerIndex;
|
||||
}
|
||||
|
||||
void LogSender::OnConnected()
|
||||
{
|
||||
setRecvBufSize(1024 * 1024);
|
||||
setSendBufSize(1024 * 1024);
|
||||
}
|
||||
|
||||
void LogSender::LogCounter(ActorId actorId, const char* aid, const char* user_level /*= ""*/,
|
||||
const char* counter /*= ""*/, const char* value /*= ""*/, const char* extra /*= ""*/,
|
||||
const char* kingdom /*= ""*/, const char* phylum /*= ""*/, const char* classfield /*= ""*/,
|
||||
const char* family /*= ""*/, const char* genus /*= ""*/, int flag)
|
||||
{
|
||||
if (stop_log_ || stop_counter_log_) return;
|
||||
|
||||
LCounter data;
|
||||
memset(&data, 0, sizeof(data));
|
||||
|
||||
data.actorid_ = actorId;
|
||||
data.flag_ = flag;
|
||||
|
||||
if (aid)
|
||||
{
|
||||
_STRNCPY_A(data.aid_, aid);
|
||||
}
|
||||
|
||||
if (user_level)
|
||||
{
|
||||
_STRNCPY_A(data.user_level_, user_level);
|
||||
}
|
||||
|
||||
if (counter)
|
||||
{
|
||||
_STRNCPY_A(data.counter_, counter);
|
||||
}
|
||||
|
||||
if (value)
|
||||
{
|
||||
_STRNCPY_A(data.value_, value);
|
||||
}
|
||||
|
||||
if (extra)
|
||||
{
|
||||
_STRNCPY_A(data.extra_, extra);
|
||||
}
|
||||
|
||||
if (kingdom)
|
||||
{
|
||||
_STRNCPY_A(data.kingdom_, kingdom);
|
||||
}
|
||||
|
||||
if (phylum)
|
||||
{
|
||||
_STRNCPY_A(data.phylum_, phylum);
|
||||
}
|
||||
|
||||
if (classfield)
|
||||
{
|
||||
_STRNCPY_A(data.classfield_, classfield);
|
||||
}
|
||||
|
||||
if (family)
|
||||
{
|
||||
_STRNCPY_A(data.family_, family);
|
||||
}
|
||||
|
||||
if (genus)
|
||||
{
|
||||
_STRNCPY_A(data.genus_, genus);
|
||||
}
|
||||
|
||||
DataPacket& pdata = allocProtoPacket(lmCounter);
|
||||
pdata << data;
|
||||
flushProtoPacket(pdata);
|
||||
}
|
||||
|
||||
void LogSender::LogDcApiLogByStr(const char* logName, const char* logContent)
|
||||
{
|
||||
if (stop_log_) return;
|
||||
|
||||
if(!logName || !logContent) return;
|
||||
LDcApiData data;
|
||||
memset(&data, 0, sizeof(data));
|
||||
data.log_type_ = 4;
|
||||
_STRNCPY_A(data.log_name_, logName);
|
||||
_STRNCPY_A(data.content_ ,logContent);
|
||||
DataPacket& pdata = allocProtoPacket(lmDcApiData);
|
||||
pdata << data;
|
||||
flushProtoPacket(pdata);
|
||||
}
|
||||
|
||||
|
||||
void LogSender::LogDcApiProto(const char* openId, int pfId, int serverId, int roleId, int systemId, int protoId, int protoType, int protoResult, const char* svrip, const char* userip)
|
||||
{
|
||||
//if (!et || ((Entity*)et)->GetType() != enActor)
|
||||
// return;
|
||||
//Actor* pActor =(Entity*)et;
|
||||
if (stop_log_) return;
|
||||
|
||||
if(!openId) return;
|
||||
|
||||
LDcApiProtoLog logData;
|
||||
memset(&logData, 0, sizeof(logData));
|
||||
|
||||
//_STRNCPY_A(logData.openId, pActor->GetAccount());
|
||||
_STRNCPY_A(logData.openId, openId);
|
||||
logData.domain = pfId;
|
||||
//logData.serverId = ServerInstance()->GetServerIndex();
|
||||
logData.serverId = serverId;
|
||||
_STRNCPY_A(logData.svrip, svrip);
|
||||
_STRNCPY_A(logData.userip, userip);
|
||||
|
||||
//logData.roleId = pActor->GetActorId();
|
||||
logData.roleId = roleId;
|
||||
logData.protoId = MAKEINT16(protoId, systemId);
|
||||
logData.gameFeatrueId = systemId;
|
||||
logData.protoType = protoType;
|
||||
logData.protoResult = protoResult;
|
||||
|
||||
DataPacket& pdata = allocProtoPacket(lmDcApiProto);
|
||||
pdata << logData;
|
||||
flushProtoPacket(pdata);
|
||||
}
|
||||
|
||||
|
||||
|
||||
void LogSender::LogInstall(const char* aid, const char* source /*= ""*/,
|
||||
const char* affiliate /*= ""*/, const char* creative /*= ""*/,
|
||||
const char* family /*= ""*/, const char* genus /*= ""*/,
|
||||
const char* from_uid /*= ""*/ , const char* extra, int flag/* = 3*/)
|
||||
{
|
||||
if (stop_log_) return;
|
||||
|
||||
LInstall data;
|
||||
memset(&data, 0, sizeof(data));
|
||||
|
||||
data.flag_ = flag;
|
||||
|
||||
if (aid)
|
||||
{
|
||||
_STRNCPY_A(data.aid_, aid);
|
||||
}
|
||||
|
||||
if (source)
|
||||
{
|
||||
_STRNCPY_A(data.source_, source);
|
||||
}
|
||||
|
||||
if (affiliate)
|
||||
{
|
||||
_STRNCPY_A(data.affiliate_, affiliate);
|
||||
}
|
||||
|
||||
if (creative)
|
||||
{
|
||||
_STRNCPY_A(data.creative_, creative);
|
||||
}
|
||||
|
||||
if (family)
|
||||
{
|
||||
_STRNCPY_A(data.family_, family);
|
||||
}
|
||||
|
||||
if (genus)
|
||||
{
|
||||
_STRNCPY_A(data.genus_, genus);
|
||||
}
|
||||
|
||||
if (from_uid)
|
||||
{
|
||||
_STRNCPY_A(data.from_uid_, from_uid);
|
||||
}
|
||||
|
||||
if (extra)
|
||||
{
|
||||
_STRNCPY_A(data.extra_, extra);
|
||||
}
|
||||
|
||||
DataPacket& pdata = allocProtoPacket(lmInstall);
|
||||
pdata << data;
|
||||
flushProtoPacket(pdata);
|
||||
}
|
||||
|
||||
void LogSender::LogDau(const char* aid, const char* source /*= ""*/,
|
||||
const char* affiliate /*= ""*/, const char* creative /*= ""*/,
|
||||
const char* family /*= ""*/, const char* genus /*= ""*/,
|
||||
const char* ip /*= ""*/, const char* from_uid /*= ""*/, const char* extra, int flag/* = 3*/)
|
||||
{
|
||||
if (stop_log_) return;
|
||||
|
||||
LDau data;
|
||||
memset(&data, 0, sizeof(data));
|
||||
|
||||
data.flag_ = flag;
|
||||
|
||||
if (aid)
|
||||
{
|
||||
_STRNCPY_A(data.aid_, aid);
|
||||
}
|
||||
|
||||
if (source)
|
||||
{
|
||||
_STRNCPY_A(data.source_, source);
|
||||
}
|
||||
|
||||
if (affiliate)
|
||||
{
|
||||
_STRNCPY_A(data.affiliate_, affiliate);
|
||||
}
|
||||
|
||||
if (creative)
|
||||
{
|
||||
_STRNCPY_A(data.creative_, creative);
|
||||
}
|
||||
|
||||
if (family)
|
||||
{
|
||||
_STRNCPY_A(data.family_, family);
|
||||
}
|
||||
|
||||
if (genus)
|
||||
{
|
||||
_STRNCPY_A(data.genus_, genus);
|
||||
}
|
||||
|
||||
if (ip)
|
||||
{
|
||||
_STRNCPY_A(data.ip_, ip);
|
||||
}
|
||||
|
||||
if (from_uid)
|
||||
{
|
||||
_STRNCPY_A(data.from_uid_, from_uid);
|
||||
}
|
||||
|
||||
if (extra)
|
||||
{
|
||||
_STRNCPY_A(data.extra_, extra);
|
||||
}
|
||||
|
||||
DataPacket& pdata = allocProtoPacket(lmDau);
|
||||
pdata << data;
|
||||
flushProtoPacket(pdata);
|
||||
}
|
||||
|
||||
void LogSender::LogEnconomy(ActorId actorid, const char* aid, const char* currency /*= ""*/,
|
||||
const char* amount /*= ""*/, const char* value /*= ""*/,
|
||||
const char* kingdom /*= ""*/, const char* phylum /*= ""*/,
|
||||
const char* classfield /*= ""*/, const char* family /*= ""*/,
|
||||
const char* genus /*= ""*/ , const char* extra, const char* extra2, const char* pf, int flag/* = 3*/,
|
||||
bool isPay, const char* openkey, const char* pfkey, const char* pfid)
|
||||
{
|
||||
if (stop_log_ || stop_economy_log_) return;
|
||||
|
||||
LEconomy data;
|
||||
memset(&data, 0, sizeof(data));
|
||||
|
||||
data.flag_ = flag;
|
||||
data.flag_ |= (isPay ? lfiIsPay : 0);
|
||||
|
||||
data.actorid_ = actorid;
|
||||
|
||||
if (aid)
|
||||
{
|
||||
_STRNCPY_A(data.aid_, aid);
|
||||
}
|
||||
|
||||
if (currency)
|
||||
{
|
||||
_STRNCPY_A(data.currency_, currency);
|
||||
}
|
||||
|
||||
if (amount)
|
||||
{
|
||||
_STRNCPY_A(data.amount_, amount);
|
||||
}
|
||||
|
||||
if (value)
|
||||
{
|
||||
_STRNCPY_A(data.value_, value);
|
||||
}
|
||||
|
||||
if (kingdom)
|
||||
{
|
||||
_STRNCPY_A(data.kingdom_, kingdom);
|
||||
}
|
||||
|
||||
if (phylum)
|
||||
{
|
||||
_STRNCPY_A(data.phylum_, phylum);
|
||||
}
|
||||
|
||||
if (classfield)
|
||||
{
|
||||
_STRNCPY_A(data.classfield_, classfield);
|
||||
}
|
||||
|
||||
if (family)
|
||||
{
|
||||
_STRNCPY_A(data.family_, family);
|
||||
}
|
||||
|
||||
if (genus)
|
||||
{
|
||||
_STRNCPY_A(data.genus_, genus);
|
||||
}
|
||||
|
||||
if (extra)
|
||||
{
|
||||
_STRNCPY_A(data.extra_, extra);
|
||||
}
|
||||
|
||||
if (extra2)
|
||||
{
|
||||
_STRNCPY_A(data.extra2_, extra2);
|
||||
}
|
||||
|
||||
if (pf)
|
||||
{
|
||||
_STRNCPY_A(data.pf_, pf);
|
||||
}
|
||||
|
||||
if (openkey)
|
||||
{
|
||||
_STRNCPY_A(data.openkey_, openkey);
|
||||
}
|
||||
|
||||
if (pfkey)
|
||||
{
|
||||
_STRNCPY_A(data.pfkey_, pfkey);
|
||||
}
|
||||
|
||||
if (pfid) {
|
||||
_STRNCPY_A(data.pfid_, pfid);
|
||||
}
|
||||
|
||||
DataPacket& pdata = allocProtoPacket(lmEconomy);
|
||||
pdata << data;
|
||||
flushProtoPacket(pdata);
|
||||
}
|
||||
|
||||
void LogSender::LogMilestone(ActorId actorid, const char* aid, const char* milestone /*= ""*/, const char* value /*= ""*/, const char* extra, int flag/* = 3*/)
|
||||
{
|
||||
if (stop_log_) return;
|
||||
|
||||
LMilestone data;
|
||||
memset(&data, 0, sizeof(data));
|
||||
|
||||
data.flag_ = flag;
|
||||
data.actorid_ = actorid;
|
||||
|
||||
if (aid)
|
||||
{
|
||||
_STRNCPY_A(data.aid_, aid);
|
||||
}
|
||||
|
||||
if (milestone)
|
||||
{
|
||||
_STRNCPY_A(data.milestone_, milestone);
|
||||
}
|
||||
|
||||
if (value)
|
||||
{
|
||||
_STRNCPY_A(data.value_, value);
|
||||
}
|
||||
|
||||
if (extra)
|
||||
{
|
||||
_STRNCPY_A(data.extra_, extra);
|
||||
}
|
||||
|
||||
DataPacket& pdata = allocProtoPacket(lmMilestone);
|
||||
pdata << data;
|
||||
flushProtoPacket(pdata);
|
||||
}
|
||||
|
||||
void LogSender::LogPayment(int ret, ActorId actorId, const char* aid, int amount,
|
||||
int mstType, int p1, int p2, int p3,
|
||||
int value /*= 1*/, const char* kingdom /*= ""*/, const char* phylum /*= ""*/, const char* transactionid /*= ""*/,
|
||||
const char* extra /*= ""*/, int p4 /*= 0*/, int p5 /*= 0*/, int flag/* = 3*/)
|
||||
{
|
||||
if (stop_log_) return;
|
||||
|
||||
LPayment data;
|
||||
memset(&data, 0, sizeof(data));
|
||||
data.ret_ = ret;
|
||||
data.actorId_ = actorId;
|
||||
data.amount_ = amount;
|
||||
data.value_ = value;
|
||||
data.mstType_ = mstType;
|
||||
data.p1_ = p1;
|
||||
data.p2_ = p2;
|
||||
data.p3_ = p3;
|
||||
data.p4_ = p4;
|
||||
data.p5_ = p5;
|
||||
data.flag_ = flag;
|
||||
|
||||
if (aid)
|
||||
{
|
||||
_STRNCPY_A(data.aid_, aid);
|
||||
}
|
||||
|
||||
if (kingdom)
|
||||
{
|
||||
_STRNCPY_A(data.kingdom_, kingdom);
|
||||
}
|
||||
|
||||
if (phylum)
|
||||
{
|
||||
_STRNCPY_A(data.phylum_, phylum);
|
||||
}
|
||||
|
||||
if (transactionid)
|
||||
{
|
||||
_STRNCPY_A(data.transactionid_, transactionid);
|
||||
}
|
||||
|
||||
if (extra)
|
||||
{
|
||||
_STRNCPY_A(data.extra_, extra);
|
||||
}
|
||||
|
||||
DataPacket& pdata = allocProtoPacket(lmPayment);
|
||||
pdata << data;
|
||||
flushProtoPacket(pdata);
|
||||
}
|
||||
|
||||
void LogSender::LogGameInfo(const char* aid, const char* user_level /*= ""*/,
|
||||
const char* value /*= ""*/, const char* extra /*= ""*/, const char* kingdom /*= ""*/,
|
||||
const char* phylum /*= ""*/, const char* classfield /*= ""*/, const char* family /*= ""*/,
|
||||
const char* genus /*= ""*/,
|
||||
int flag/* = 3*/)
|
||||
{
|
||||
if (stop_log_) return;
|
||||
|
||||
LGameInfo data;
|
||||
memset(&data, 0, sizeof(data));
|
||||
|
||||
data.flag_ = flag;
|
||||
|
||||
if (aid)
|
||||
{
|
||||
_STRNCPY_A(data.aid_, aid);
|
||||
}
|
||||
|
||||
if (user_level)
|
||||
{
|
||||
_STRNCPY_A(data.user_level_, user_level);
|
||||
}
|
||||
|
||||
if (value)
|
||||
{
|
||||
_STRNCPY_A(data.value_, value);
|
||||
}
|
||||
|
||||
if (extra)
|
||||
{
|
||||
_STRNCPY_A(data.extra_, extra);
|
||||
}
|
||||
|
||||
if (kingdom)
|
||||
{
|
||||
_STRNCPY_A(data.kingdom_, kingdom);
|
||||
}
|
||||
|
||||
if (phylum)
|
||||
{
|
||||
_STRNCPY_A(data.phylum_, phylum);
|
||||
}
|
||||
|
||||
if (classfield)
|
||||
{
|
||||
_STRNCPY_A(data.classfield_, classfield);
|
||||
}
|
||||
|
||||
if (family)
|
||||
{
|
||||
_STRNCPY_A(data.family_, family);
|
||||
}
|
||||
|
||||
if (genus)
|
||||
{
|
||||
_STRNCPY_A(data.genus_, genus);
|
||||
}
|
||||
|
||||
DataPacket& pdata = allocProtoPacket(lmGameInfo);
|
||||
pdata << data;
|
||||
flushProtoPacket(pdata);
|
||||
}
|
||||
|
||||
void LogSender::LogChat(const char* aid, const char* name, const char* ip, const char* pf, int actorid, int type,
|
||||
const char* content, const char* toaid /* = "" */, const char* toname /* = "" */)
|
||||
{
|
||||
if (stop_log_) return;
|
||||
|
||||
LChat data;
|
||||
memset(&data, 0, sizeof(data));
|
||||
|
||||
if (aid)
|
||||
{
|
||||
_STRNCPY_A(data.aid_, aid);
|
||||
}
|
||||
|
||||
if (name)
|
||||
{
|
||||
_STRNCPY_A(data.name_, name);
|
||||
}
|
||||
|
||||
if (pf)
|
||||
{
|
||||
_STRNCPY_A(data.pf_, pf);
|
||||
}
|
||||
|
||||
if (ip)
|
||||
{
|
||||
_STRNCPY_A(data.ip_, ip);
|
||||
}
|
||||
|
||||
data.type_ = type;
|
||||
|
||||
data.actorid_ = actorid;
|
||||
|
||||
if (content)
|
||||
{
|
||||
_STRNCPY_A(data.content_, content);
|
||||
}
|
||||
|
||||
if (toaid)
|
||||
{
|
||||
_STRNCPY_A(data.toaid_, toaid);
|
||||
}
|
||||
|
||||
if (toname)
|
||||
{
|
||||
_STRNCPY_A(data.toname_, toname);
|
||||
}
|
||||
|
||||
DataPacket& pdata = allocProtoPacket(lmChat);
|
||||
pdata << data;
|
||||
flushProtoPacket(pdata);
|
||||
}
|
||||
|
||||
void LogSender::LogOnline(int cnt, int extra)
|
||||
{
|
||||
if (stop_log_) return;
|
||||
|
||||
DataPacket& pdata = allocProtoPacket(lmOnline);
|
||||
pdata << (int)cnt;
|
||||
pdata << (int)extra;
|
||||
flushProtoPacket(pdata);
|
||||
}
|
||||
|
||||
void LogSender::LogTLog(const char* logstr)
|
||||
{
|
||||
if (stop_log_) return;
|
||||
|
||||
DataPacket& pdata = allocProtoPacket(lmTLog);
|
||||
pdata.writeString(logstr);
|
||||
flushProtoPacket(pdata);
|
||||
}
|
||||
|
||||
void LogSender::LogDKMLog(const char* logstr, const char* pf)
|
||||
{
|
||||
if (!logstr || !pf) return;
|
||||
if (stop_log_) return;
|
||||
|
||||
DataPacket& pdata = allocProtoPacket(lmDKMLog);
|
||||
pdata.writeString(logstr);
|
||||
pdata.writeString(pf);
|
||||
flushProtoPacket(pdata);
|
||||
}
|
||||
|
||||
187
Gateway/common/log/log_sender.h
Normal file
187
Gateway/common/log/log_sender.h
Normal file
@@ -0,0 +1,187 @@
|
||||
#ifndef _LOG_SENDER_H_
|
||||
#define _LOG_SENDER_H_
|
||||
|
||||
class NetClient;
|
||||
|
||||
class LogSender:
|
||||
public NetClient
|
||||
{
|
||||
public:
|
||||
// DC API日志
|
||||
void LogDcApiLogByStr(const char* logName, const char* logContent);
|
||||
// DC API游戏协议日志
|
||||
void LogDcApiProto(const char* openId, int pf, int serverId, int roleId, int systemId, int protoId, int protoType, int protoResult, const char* svrip, const char* userip);
|
||||
|
||||
void LogCounter(ActorId actorid, const char* aid,
|
||||
const char* user_level = "",
|
||||
const char* counter = "",
|
||||
const char* value = "",
|
||||
const char* extra = "",
|
||||
const char* kingdom = "",
|
||||
const char* phylum = "",
|
||||
const char* classfield = "",
|
||||
const char* family = "",
|
||||
const char* genus = "",
|
||||
int flag = 1);
|
||||
|
||||
void LogInstall(const char* actorId, const char* source = "",
|
||||
const char* affiliate = "",
|
||||
const char* creative = "",
|
||||
const char* family = "",
|
||||
const char* genus = "",
|
||||
const char* from_uid = "",
|
||||
const char* extra = "",
|
||||
int flag = 3);
|
||||
|
||||
void LogDau(const char* aid,
|
||||
const char* source = "",
|
||||
const char* affiliate = "",
|
||||
const char* creative = "",
|
||||
const char* family = "",
|
||||
const char* genus = "",
|
||||
const char* ip = "",
|
||||
const char* from_uid = "",
|
||||
const char* extra = "",
|
||||
int flag = 3);
|
||||
|
||||
void LogEnconomy(ActorId actorid, const char* aid,
|
||||
const char* currency = "",
|
||||
const char* amount = "",
|
||||
const char* value = "",
|
||||
const char* kingdom = "",
|
||||
const char* phylum = "",
|
||||
const char* classfield = "",
|
||||
const char* family = "",
|
||||
const char* genus = "",
|
||||
const char* extra = "",
|
||||
const char* extra2 = "",
|
||||
const char* pf = "",
|
||||
int flag = 3,
|
||||
bool isPay = true,
|
||||
const char* openkey = "",
|
||||
const char* pfkey = "", const char* pfid = ""); // 表示是否充值的数据
|
||||
|
||||
void LogMilestone(
|
||||
ActorId actorid,
|
||||
const char* aid,
|
||||
const char* milestone = "",
|
||||
const char* value = "",
|
||||
const char* extra = "",
|
||||
int flag = 3);
|
||||
|
||||
void LogPayment(int ret, ActorId actorId, const char* aid, int amount,
|
||||
int mstType,
|
||||
int p1,
|
||||
int p2,
|
||||
int p3,
|
||||
int value = 1,
|
||||
const char* kingdom = "",
|
||||
const char* phylum = "",
|
||||
const char* transactionid = "",
|
||||
const char* extra = "",
|
||||
int p4 = 0,
|
||||
int p5 = 0,
|
||||
int flag = 3);
|
||||
|
||||
void LogGameInfo(const char* aid,
|
||||
const char* user_level = "",
|
||||
const char* value = "",
|
||||
const char* extra = "",
|
||||
const char* kingdom = "",
|
||||
const char* phylum = "",
|
||||
const char* classfield = "",
|
||||
const char* family = "",
|
||||
const char* genus = "",
|
||||
int flag = 3);
|
||||
|
||||
void LogChat(const char* aid,
|
||||
const char* name,
|
||||
const char* ip,
|
||||
const char* pf,
|
||||
ActorId actorid,
|
||||
int type,
|
||||
const char* content,
|
||||
const char* toaid = "",
|
||||
const char* toname = "");
|
||||
|
||||
// 记录在线人数
|
||||
void LogOnline(int cnt, int extra);
|
||||
|
||||
void LogTLog(const char* logstr);
|
||||
|
||||
void LogDKMLog(const char* logstr, const char* pf = "0");
|
||||
|
||||
inline int GetServerIndex()
|
||||
{
|
||||
return ServerIndex;
|
||||
}
|
||||
inline int GetServerType()
|
||||
{
|
||||
return ServerType;
|
||||
}
|
||||
inline const char* GetServerName()
|
||||
{
|
||||
return ServerName;
|
||||
}
|
||||
|
||||
void SetServerIndex(const int nSerIdx)
|
||||
{
|
||||
ServerIndex = nSerIdx;
|
||||
}
|
||||
void SetServerType(const int nSrvType)
|
||||
{
|
||||
ServerType = nSrvType;
|
||||
}
|
||||
void SetServerName(const char* sServerName);
|
||||
|
||||
// 是否停止记录日志
|
||||
inline void StopLog(bool flag = true)
|
||||
{
|
||||
stop_log_ = flag;
|
||||
}
|
||||
inline void StopCounterLog(bool flag = true)
|
||||
{
|
||||
stop_counter_log_ = flag;
|
||||
}
|
||||
inline void StopEconomyLog(bool flag = true)
|
||||
{
|
||||
stop_economy_log_ = flag;
|
||||
}
|
||||
|
||||
public:
|
||||
LogSender();
|
||||
LogSender(int ServerType, int ServerIndex, char* ServerName);
|
||||
~LogSender(void);
|
||||
protected:
|
||||
// /*** 子类需覆盖的函数集 ***/
|
||||
///* 处理单个通信数据包
|
||||
// * nCmd 通信消息命令
|
||||
// * inPacket 已经读取出通信命令的数据包,数据包的读取位置指向命令数据后的内容
|
||||
// */
|
||||
//virtual void OnRecv(const uint16_t cmd, DataPacketReader &data);
|
||||
|
||||
/*** 下列函数为子类可能有必要覆盖的函数集 ***/
|
||||
/* ★查询本地服务器的类型,以便正确的发送注册数据 */
|
||||
virtual int GetLocalServerType();
|
||||
|
||||
/* ★查询本地服务器的名称,以便正确的发送注册数据 */
|
||||
virtual const char* GetLocalServerName();
|
||||
/* ★查询本地服务器ID,以便正确的发送注册数据,默认的返回值是0 */
|
||||
virtual int GetLocalServerIndex();
|
||||
|
||||
void OnConnected();
|
||||
private:
|
||||
|
||||
//以下4个值用于发送注册包
|
||||
int ServerType; //服务器类型,值为SERVERTYPE枚举类型中的枚举值
|
||||
int ServerIndex; //服务器唯一编号(服务器编号仅对游戏服务器有意义)
|
||||
char ServerName[128]; //服务器名称,需包含0终止符
|
||||
|
||||
bool stop_log_;
|
||||
bool stop_counter_log_;
|
||||
bool stop_economy_log_;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
Reference in New Issue
Block a user