主要操作
主要的内容就是根据模型的字段要求,在相应的游戏逻辑执行时将埋点的json串发送到Kafka
代码实现
由于游戏服务端采用Java编写,所以现在以Java为例进行说明
public abstract class LogEvent implements Serializable {
private static final Gson GSON = new Gson();
public int serverId;
protected long createTime;
protected String logName = "";
public LogEvent() {
this.createTime = System.currentTimeMillis();
this.serverId = LogHelper.getServerId();
this.logName = getLogType().getName();
}
/**
* 日志类型
* @return
*/
public abstract LogType getLogType();
//向Kafka发送日志
public void send() {
try {
KafkaClient.send("xxxxLog", toString());
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
public String toString() {
return GSON.toJson(this);
}
}
public abstract class CommonLogEvent extends LogEvent {
// 用户账户
public String account;
// 用户账户ID
public Long userId;
// 角色ID
public long roleId;
// 角色等级
public Integer roleLevel;
// 角色名称
public String roleName;
// 渠道
public String channelKey;
// 设备ID
public String deviceId;
// 性别
public Integer gender;
public CommonLogEvent () {
}
public CommonLogEvent (PlayerControl playerControl)
{
//此处的字段根据游戏服务端相应的实现来赋值
this.account = playerControl.getUserControl().getUsername();
this.userId = playerControl.getUserControl().getId();
this.roleId = playerControl.getId();
this.roleLevel = playerControl.getLevel();
this.roleName = playerControl.get(Attribute.name);
this.channelKey = playerControl.getUserControl().getUserChannel();
this.deviceId = playerControl.getUserControl().getDeviceId();
this.serverId = ServerManager.getServerId();
}
}
/**
* 事件类型枚举类
*/
public enum LogType {
LoginEntity(1, "LoginEntity"),
CampEntity(2, "CampEntity"),
CreateRoleEntity(3, "CreateRoleEntity"),
CreateUserEntity(4, "CreateUserEntity"),
LogoutEntity(5, "LogoutEntity"),
OnlineTimeEntity(6, "OnlineTimeEntity"),
RemoveRoleEntity(7, "RemoveRoleEntity"),
CostCurrencyEntity(9, "CostCurrencyEntity"),
GetCurrencyEntity(10, "GetCurrencyEntity"),
DressEntity(11, "DressEntity"),
EquipNoEntity(12, "EquipNoEntity"),
EquipSlotEntity(13, "EquipSlotEntity"),
FriendLogEntity(14, "FriendLogEntity"),
CostItemEntity(16, "CostItemEntity"),
GetItemEntity(17, "GetItemEntity"),
CopyEntity(19, "CopyEntity"),
GuildEntity(20, "GuildEntity"),
GuildMemberEntity(21, "GuildMemberEntity"),
LevelEntity(22, "LevelEntity"),
MailEntity(23, "MailEntity"),
SkillPositionEntity(26, "SkillPositionEntity"),
TaskEntity(28, "TaskEntity"),
RechargeEntity(29, "RechargeEntity"),
GameActivityEntity(31, "GameActivityEntity"),
MartialEntity(32, "MartialEntity"),
MountEntity(33, "MountEntity"),
PetEntity(34, "PetEntity"),
ShopEntity(35, "ShopEntity"),
NpcGiftEntity(36, "NpcGiftEntity"),
BadRyKillEntity(37, "BadRyKillEntity"