02.友盟项目--原始日志数据生成

 友盟架构图1

 友盟架构图2

日志生成类

package com.star.umeng.phone.domain;

/**
 * App日志的公共属性
 */
public class AppBaseLog {
    private Long createdAtMs;           //日志创建时间
    private String appId;               //应用唯一标识
    private String tenantId;            //租户唯一标识,企业用户
    private String deviceId;            //设备唯一标识
    private String appVersion;          //版本
    private String appChannel;          //渠道,安装时就在清单中制定了,appStore等。
    private String appPlatform;         //平台
    private String osType;              //操作系统
    private String deviceStyle;         //机型

    public Long getCreatedAtMs() {
        return createdAtMs;
    }

    public void setCreatedAtMs(Long createdAtMs) {
        this.createdAtMs = createdAtMs;
    }

    public String getAppId() {
        return appId;
    }

    public void setAppId(String appId) {
        this.appId = appId;
    }

    public String getTenantId() {
        return tenantId;
    }

    public void setTenantId(String tenantId) {
        this.tenantId = tenantId;
    }

    public String getDeviceId() {
        return deviceId;
    }

    public void setDeviceId(String deviceId) {
        this.deviceId = deviceId;
    }

    public String getAppVersion() {
        return appVersion;
    }

    public void setAppVersion(String appVersion) {
        this.appVersion = appVersion;
    }

    public String getAppChannel() {
        return appChannel;
    }

    public void setAppChannel(String appChannel) {
        this.appChannel = appChannel;
    }

    public String getAppPlatform() {
        return appPlatform;
    }

    public void setAppPlatform(String appPlatform) {
        this.appPlatform = appPlatform;
    }

    public String getOsType() {
        return osType;
    }

    public void setOsType(String osType) {
        this.osType = osType;
    }

    public String getDeviceStyle() {
        return deviceStyle;
    }

    public void setDeviceStyle(String deviceStyle) {
        this.deviceStyle = deviceStyle;
    }
}
AppBaseLog-App日志的公共属性
package com.star.umeng.phone.domain;

/**
 * 错误日志
 */
public class AppErrorLog extends AppBaseLog {
    private String errorBrief;        //错误摘要
    private String errorDetail;       //错误详情

    public String getErrorBrief() {
        return errorBrief;
    }

    public void setErrorBrief(String errorBrief) {
        this.errorBrief = errorBrief;
    }

    public String getErrorDetail() {
        return errorDetail;
    }

    public void setErrorDetail(String errorDetail) {
        this.errorDetail = errorDetail;
    }
}
AppErrorLog-错误日志
package com.star.umeng.phone.domain;

import java.util.Map;

/**
 * 事件日志
 */
public class AppEventLog extends AppBaseLog {
    private String eventId;                                //事件唯一标识
    private Long eventDurationSecs;                        //事件持续时长
    private Map<String, String> paramKeyValueMap;        //参数名/值对

    public String getEventId() {
        return eventId;
    }

    public void setEventId(String eventId) {
        this.eventId = eventId;
    }

    public Long getEventDurationSecs() {
        return eventDurationSecs;
    }

    public void setEventDurationSecs(Long eventDurationSecs) {
        this.eventDurationSecs = eventDurationSecs;
    }

    public Map<String, String> getParamKeyValueMap() {
        return paramKeyValueMap;
    }

    public void setParamKeyValueMap(Map<String, String> paramKeyValueMap) {
        this.paramKeyValueMap = paramKeyValueMap;
    }
    //getter/setter
}
AppEventLog-事件日志
package com.star.umeng.phone.domain;

/**
 * 页面日志
 */
public class AppPageLog extends AppBaseLog {
    private int pageViewCntInSession = 0;
    private String pageId;                        //页面id
    private int visitIndex = 0;                    //访问顺序号,0为第一个页面
    private String nextPage;                    //下一个访问页面,空表示为退出应用的页面
    private Long stayDurationSecs = (long) 0;     //当前页面停留时长

    public int getPageViewCntInSession() {
        return pageViewCntInSession;
    }

    public void setPageViewCntInSession(int pageViewCntInSession) {
        this.pageViewCntInSession = pageViewCntInSession;
    }

    public String getPageId() {
        return pageId;
    }

    public void setPageId(String pageId) {
        this.pageId = pageId;
    }

    public int getVisitIndex() {
        return visitIndex;
    }

    public void setVisitIndex(int visitIndex) {
        this.visitIndex = visitIndex;
    }

    public String getNextPage() {
        return nextPage;
    }

    public void setNextPage(String nextPage) {
        this.nextPage = nextPage;
    }

    public Long getStayDurationSecs() {
        return stayDurationSecs;
    }

    public void setStayDurationSecs(Long stayDurationSecs) {
        this.stayDurationSecs = stayDurationSecs;
    }
}
AppPageLog --页面日志
package com.star.umeng.phone.domain;

/**
 * 启动日志
 */
public class AppStartupLog extends AppBaseLog {
    private String country;           //国家,终端不用上报,服务器自动填充该属性
    private String province;          //省份,终端不用上报,服务器自动填充该属性
    private String ipAddress;         //ip地址

    private String network;           //网络
    private String carrier;           //运营商

    private String brand;             //品牌
    private String screenSize;        //分辨率

    public String getCountry() {
        return country;
    }

    public void setCountry(String country) {
        this.country = country;
    }

    public String getProvince() {
        return province;
    }

    public void setProvince(String province) {
        this.province = province;
    }

    public String getIpAddress() {
        return ipAddress;
    }

    public void setIpAddress(String ipAddress) {
        this.ipAddress = ipAddress;
    }

    public String getNetwork() {
        return network;
    }

    public void setNetwork(String network) {
        this.network = network;
    }

    public String getCarrier() {
        return carrier;
    }

    public void setCarrier(String carrier) {
        this.carrier = carrier;
    }

    public String getBrand() {
        return brand;
    }

    public void setBrand(String brand) {
        this.brand = brand;
    }

    public String getScreenSize() {
        return screenSize;
    }

    public void setScreenSize(String screenSize) {
        this.screenSize = screenSize;
    }
}
AppStartupLog --启动日志
package com.star.umeng.phone.domain;

/**
 * 使用日志
 */
public class AppUsageLog extends AppBaseLog {
    private Long singleUseDurationSecs;      //单次使用时长
    private Long singleUploadTraffic;        //单次使用过程中的上传流量
    private Long singleDownloadTraffic;      //单次使用过程中的下载流量

    public Long getSingleUseDurationSecs() {
        return singleUseDurationSecs;
    }

    public void setSingleUseDurationSecs(Long singleUseDurationSecs) {
        this.singleUseDurationSecs = singleUseDurationSecs;
    }

    public Long getSingleUploadTraffic() {
        return singleUploadTraffic;
    }

    public void setSingleUploadTraffic(Long singleUploadTraffic) {
        this.singleUploadTraffic = singleUploadTraffic;
    }

    public Long getSingleDownloadTraffic() {
        return singleDownloadTraffic;
    }

    public void setSingleDownloadTraffic(Long singleDownloadTraffic) {
        this.singleDownloadTraffic = singleDownloadTraffic;
    }
}
AppUsageLog --使用日志
package com.star.umeng.phone.domain;


import java.util.ArrayList;
import java.util.List;

/**
 * 日志聚合体
 */
public class AppLogAggEntity {
    private String appId;               //应用唯一标识
    private String tenantId;            //租户唯一标识,企业用户
    private String deviceId;            //设备唯一标识
    private String appVersion;          //版本
    private String appChannel;          //渠道,安装时就在清单中制定了,appStore等。
    private String appPlatform;         //平台
    private String osType;              //操作系统
    private String deviceStyle;         //机型

    //5中类型的日志集合
    private List<AppStartupLog> startupLogs = new ArrayList<AppStartupLog>();
    private List<AppErrorLog> errorLogs = new ArrayList<AppErrorLog>();
    private List<AppEventLog> eventLogs = new ArrayList<AppEventLog>();
    private List<AppUsageLog> usageLogs = new ArrayList<AppUsageLog>();
    private List<AppPageLog> pageLogs = new ArrayList<AppPageLog>();

    public String getAppId() {
        return appId;
    }

    public void setAppId(String appId) {
        this.appId = appId;
    }

    public String getTenantId() {
        return tenantId;
    }

    public void setTenantId(String tenantId) {
        this.tenantId = tenantId;
    }

    public String getDeviceId() {
        return deviceId;
    }

    public void setDeviceId(String deviceId) {
        this.deviceId = deviceId;
    }

    public String getAppVersion() {
        return appVersion;
    }

    public void setAppVersion(String appVersion) {
        this.appVersion = appVersion;
    }

    public String getAppChannel() {
        return appChannel;
    }

    public void setAppChannel(String appChannel) {
        this.appChannel = appChannel;
    }

    public String getAppPlatform() {
        return appPlatform;
    }

    public void setAppPlatform(String appPlatform) {
        this.appPlatform = appPlatform;
    }

    public String getOsType() {
        return osType;
    }

    public void setOsType(String osType) {
        this.osType = osType;
    }

    public String getDeviceStyle() {
        return deviceStyle;
    }

    public void setDeviceStyle(String deviceStyle) {
        this.deviceStyle = deviceStyle;
    }

    public List<AppStartupLog> getStartupLogs() {
        return startupLogs;
    }

    public void setStartupLogs(List<AppStartupLog> startupLogs) {
        this.startupLogs = startupLogs;
    }

    public List<AppErrorLog> getErrorLogs() {
        return errorLogs;
    }

    public void setErrorLogs(List<AppErrorLog> errorLogs) {
        this.errorLogs = errorLogs;
    }

    public List<AppEventLog> getEventLogs() {
        return eventLogs;
    }

    public void setEventLogs(List<AppEventLog> eventLogs) {
        this.eventLogs = eventLogs;
    }

    public List<AppUsageLog> getUsageLogs() {
        return usageLogs;
    }

    public void setUsageLogs(List<AppUsageLog> usageLogs) {
        this.usageLogs = usageLogs;
    }

    public List<AppPageLog> getPageLogs() {
        return pageLogs;
    }

    public void setPageLogs(List<AppPageLog> pageLogs) {
        this.pageLogs = pageLogs;
    }
}
AppLogAggEntity-- 日志聚合体

测试生成

package com.star.umeng.phone;

import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;

/**
 * 入口点程序
 */
public class Main {
    public static void main(String[] args) throws Exception {
        String strURL = "http://localhost/1.html" ;
        URL url = new URL(strURL) ;
        HttpURLConnection conn = (HttpURLConnection) url.openConnection();
        //设置请求方式
        conn.setRequestMethod("POST");
        //设置发送的内容类型
        conn.setRequestProperty("Content-Type" , "application/json");
        //允许输出到服务器
        conn.setDoOutput(true);
        OutputStream out = conn.getOutputStream() ;

        String json = "{
" + "  "appChannel": "anroid bus",
" + "  "appId": "sohuvideo",
" + "  "appPlatform": "ios",
" + "  "appVersion": "1.1.0",
" + "  "deviceStyle": "oppo 1",
" + "  "errorLogs": [
" + "    {
" + "      "appChannel": "umeng",
" + "      "appId": "gaodemap",
" + "      "appPlatform": "blackberry",
" + "      "appVersion": "1.1.0",
" + "      "deviceStyle": "vivo 3",
" + "      "errorBrief": "at cn.lift.dfdf.web.AbstractBaseController.validInbound(AbstractBaseController.java:72)",
" + "      "errorDetail": "at cn.lift.dfdfdf.control.CommandUtil.getInfo(CommandUtil.java:67) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:606)",
" + "      "osType": "android 4.0",
" + "      "tenantId": "tnt023"
" + "    }
" + "  ],
" + "  "eventLogs": [
" + "    {
" + "      "appChannel": "anroid bus",
" + "      "appId": "tianya",
" + "      "appPlatform": "android",
" + "      "appVersion": "2.0.0",
" + "      "deviceStyle": "红米",
" + "      "eventId": "popmenu",
" + "      "osType": "ios11",
" + "      "tenantId": "tnt009"
" + "    },
" + "    {
" + "      "appChannel": "appstore",
" + "      "appId": "gaodemap",
" + "      "appPlatform": "android",
" + "      "appVersion": "1.1.0",
" + "      "deviceStyle": "iphone 7 plus",
" + "      "eventId": "popmenu",
" + "      "osType": "android 4.0",
" + "      "tenantId": "tnt009"
" + "    },
" + "    {
" + "      "appChannel": "appstore",
" + "      "appId": "faobengplay",
" + "      "appPlatform": "blackberry",
" + "      "appVersion": "1.0.0",
" + "      "deviceStyle": "vivo 3",
" + "      "eventId": "autoImport",
" + "      "osType": "ios11",
" + "      "tenantId": "tnt009"
" + "    },
" + "    {
" + "      "appChannel": "anroid bus",
" + "      "appId": "tianya",
" + "      "appPlatform": "blackberry",
" + "      "appVersion": "1.1.0",
" + "      "deviceStyle": "iphone 7 plus",
" + "      "eventId": "popmenu",
" + "      "osType": "mi 5.5",
" + "      "tenantId": "tnt009"
" + "    },
" + "    {
" + "      "appChannel": "anroid bus",
" + "      "appId": "tianya",
" + "      "appPlatform": "android",
" + "      "appVersion": "1.2.0",
" + "      "deviceStyle": "iphone 7",
" + "      "eventId": "bookstore",
" + "      "osType": "ios11",
" + "      "tenantId": "tnt501"
" + "    }
" + "  ],
" + "  "osType": "ios11",
" + "  "pageLogs": [
" + "    null,
" + "    null,
" + "    null,
" + "    null,
" + "    null
" + "  ],
" + "  "startupLogs": [
" + "    {
" + "      "appChannel": "anroid bus",
" + "      "appId": "faobengplay",
" + "      "appPlatform": "ios",
" + "      "appVersion": "1.2.0",
" + "      "brand": "魅族",
" + "      "carrier": "中国铁通",
" + "      "country": "america",
" + "      "deviceStyle": "vivo 3",
" + "      "network": "wifi",
" + "      "osType": "android 4.0",
" + "      "province": "guangdong",
" + "      "screenSize": "480 * 320",
" + "      "tenantId": "tnt501"
" + "    },
" + "    {
" + "      "appChannel": "appstore",
" + "      "appId": "sohuvideo",
" + "      "appPlatform": "blackberry",
" + "      "appVersion": "2.0.0",
" + "      "brand": "Apple",
" + "      "carrier": "中国铁通",
" + "      "country": "china",
" + "      "deviceStyle": "iphone 7",
" + "      "network": "3g",
" + "      "osType": "ios11",
" + "      "province": "guangxi",
" + "      "screenSize": "1136 * 640",
" + "      "tenantId": "tnt501"
" + "    }
" + "  ],
" + "  "tenantId": "tnt009",
" + "  "usageLogs": [
" + "    {
" + "      "appChannel": "umeng",
" + "      "appId": "gaodemap",
" + "      "appPlatform": "winphone",
" + "      "appVersion": "1.1.0",
" + "      "deviceStyle": "iphone 7",
" + "      "osType": "ios11",
" + "      "tenantId": "tnt009"
" + "    },
" + "    {
" + "      "appChannel": "anroid bus",
" + "      "appId": "tianya",
" + "      "appPlatform": "android",
" + "      "appVersion": "1.2.0",
" + "      "deviceStyle": "iphone 6",
" + "      "osType": "android 4.0",
" + "      "tenantId": "tnt501"
" + "    },
" + "    {
" + "      "appChannel": "umeng",
" + "      "appId": "tianya",
" + "      "appPlatform": "winphone",
" + "      "appVersion": "1.0.0",
" + "      "deviceStyle": "vivo 3",
" + "      "osType": "mi 5.5",
" + "      "tenantId": "tnt023"
" + "    },
" + "    {
" + "      "appChannel": "umeng",
" + "      "appId": "sohuvideo",
" + "      "appPlatform": "android",
" + "      "appVersion": "1.0.0",
" + "      "deviceStyle": "iphone 6 plus",
" + "      "osType": "mi 5.5",
" + "      "tenantId": "tnt023"
" + "    }
" + "  ]
" + "}" ;
        out.write(json.getBytes());
        out.flush();
        out.close();
        int code = conn.getResponseCode() ;
        if(code == 200){
            System.out.println("发送ok!!");
        }
    }
}
测试代码-生成数据

s102--s104查看生成的数据

原文地址:https://www.cnblogs.com/star521/p/9865381.html