-- 服务端埋点日志工具文件 local skynet = require "skynet" local timeUtil = require "utils.timeUtil" local lib_game_redis = require("lib_game_redis") local root = {} local function writeServerLog(key, date, data) assert(key and date) skynet.send("statisticLog", "lua", "add_file_log", key, date, data) end function root.getActiveKey(date) return "active:uid:" .. date end function root.formatData(data) return table.concat(data, ";") end function root.formatContent(data) return table.concat(data, ",") end -- 新增活跃天玩家 local function l_add_active_user(uid) local currTime = timeUtil.currentTime() local date = timeUtil.toDate(currTime) local key = root.getActiveKey(date) -- log.info("l_add_active_user key[%s] uid[%s]", tostring(key), tostring(uid)) lib_game_redis:sadd(key, uid) end -- 服务端事件埋点 function root.logEvent(uid, bandShareCode, version, channel, eventId, extraParams) local now = timeUtil.currentTime() local date = timeUtil.toDate(now) local dateStr = timeUtil.toString(now) local cnt = string.format( "%s;%s;%s;%s;%s;%s;%s;%s", tostring(date), tostring(dateStr), tostring(uid or ""), tostring(bandShareCode or ""), tostring(channel or 0), tostring(version or ""), tostring(eventId or ""), tostring(extraParams or "") ) writeServerLog("event", date, cnt) end -- 服务端资源埋点 function root.logResource(uid, eventId, itemId, resChgs, resResult, channel, bandShareCode) local now = timeUtil.currentTime() local date = timeUtil.toDate(now) local dateStr = timeUtil.toString(now) local cnt = string.format( "%s;%s;%s;%s;%s;%s;%s;%s;%s", tostring(date), tostring(dateStr), tostring(uid), tostring(bandShareCode or ""), tostring(channel), tostring(eventId), tostring(itemId), tostring(resChgs or 0), tostring(resResult or 0) ) writeServerLog("resource", date, cnt) end -- 服务端注册埋点 function root.logRegister(uid, bandShareCode, channel, version, machineType, uuid, udid, ip) local now = timeUtil.currentTime() local date = timeUtil.toDate(now) local dateStr = timeUtil.toString(now) local data = { date, dateStr, uid or "", bandShareCode or "", channel or "", version or "", machineType or "", uuid or "", udid or "", ip or "" } local dataStr = root.formatData(data) -- 添加到每日活跃信息中 l_add_active_user(uid) writeServerLog("register", date, dataStr) end -- 服务端登录埋点 function root.logLogin(uid, bandShareCode, channel, version, machineType, operator, network, uuid, udid, ip) local now = timeUtil.currentTime() local date = timeUtil.toDate(now) local dateStr = timeUtil.toString(now) local data = { date, dateStr, uid or 0, bandShareCode or "", channel or "", version or "", machineType or "", operator or "", network or "", uuid or "", udid or "", ip or "" } local dataStr = root.formatData(data) -- 添加到每日活跃信息中 l_add_active_user(uid) writeServerLog("login", date, dataStr) end -- 服务端登出埋点 function root.logLogout(uid, bandShareCode, channel, version, runTimes) local now = timeUtil.currentTime() local date = timeUtil.toDate(now) local dateStr = timeUtil.toString(now) local data = { date, dateStr, uid or "", bandShareCode or "", channel or "", version or "", runTimes or "" } local dataStr = root.formatData(data) -- 添加到每日活跃信息中 l_add_active_user(uid) writeServerLog("logout", date, dataStr) end -- 服务端支付埋点 function root.logPay(playerInfo, orderInfo) if is_empty(playerInfo) or is_empty(orderInfo) then return end local now = timeUtil.currentTime() local date = timeUtil.toDate(now) local dateStr = timeUtil.toString(now) local data = { date, dateStr, playerInfo.uid or "", playerInfo.bandShareCode or "", playerInfo.channel or "", playerInfo.version or "", orderInfo.orderNo or "", orderInfo.pay or "", orderInfo.itemId or "", orderInfo.amount or "", orderInfo.status or "", orderInfo.retmsg or "" } local dataStr = root.formatData(data) writeServerLog("pay", date, dataStr) end -- 绑定推广码 function root.logBandShareCode(uid, bandShareCode, channel, version) local now = timeUtil.currentTime() local date = timeUtil.toDate(now) local dateStr = timeUtil.toString(now) local data = { date, dateStr, uid or "", bandShareCode or "", channel or "", version or "" } local dataStr = root.formatData(data) writeServerLog("banding", date, dataStr) end return root