使用说明文档

功能描述

1. 日志是否打印的控制:debug模式下logcat打印日志  release模式下logcat不打印日志
2. 日志是否上传的控制:配置是否需要实时上报日志,上报的日志的类型以及上报Activity生命周期方法的上报(服务器进行配置,参见服务器文档)

快速接入

申请应用标识AppKey

可以在控制台查看当前应用信息,找到当前APP的AppKey

配置gradle文件

Android Studio环境下: 在build.gradle文件中,添加如下依赖即可:

  1. 在主工程的build.gradle文件中添加如下引用:
  buildscript {
    repositories {
        maven { url "http://artifactory.jd.com/libs-releases-local/" }
    }
}

allprojects {
    repositories {
        maven { url "http://artifactory.jd.com/libs-releases-local/" }
    }
}
  1. 在module 工程中的build.gradle文件中添加如下依赖
    dependencies {
        compile 'com.jingdong.wireless.jdsdk:oklog:1.5.8'
    }

当前oklog组件最新版本为 *1.5.8*

SDK需要的权限

在使用上报SDK的时候,会使用到以下权限,请在AndroidManifest.xml 设置如下权限:

    <uses-permission android:name="android.permission.INTERNET" />
    <!-- 检查网络状态 -->
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

代码混淆

在使用性能监测sdk与上报sdk的时候,需要保证部分类在打包过程中不被混淆,具体的配置如下:

  • 在混淆文件 proguard-rules.pro 中添加如下keep配置:

        -keep class com.jingdong.sdk.oklog.** {*;}
    

接入注意点

当前shooter与OkLog引用的上报sdk版本可能不一致,需要以shooter中的为准,接入方式如下:

    compile('com.jingdong.wireless.jdsdk:oklog:1.5.8', {
        exclude group: 'com.jingdong.wireless.jd_official_sdk.sdk', module: 'JdBaseReporter'
    })

SDK初始化

  1. 请在Application中onCreate()方法初始化sdk

  2. 如果您的项目 已经使用了Shooter SDK(Sentry)并且已经完成了初始化,您可以使用如下初始化方式:

       OKLog.init(this);
    
  3. 如果您的项目 未使用Shooter SDK(Sentry),那么您需要单独对OkLog组件进行初始化:

    a. 您可以使用如下默认初始化方式:

       OKLog.init(this, "Your AppId");
    

    b. 上报数据记录需要AccountId(用户pin)及 UUID(设备唯一识别码)

    方式一: 直接传值(用户初始化期间可获取相应ID)

     OKLog.init(OKLogConfig.newBuilder(this)
             .setAppId("Your AppId")
             .setAccountId("Your AccountId")
             .setUuid("Your UUID")
             .build());
    

    方式二: 回调传值(用户不能及时获取相应ID)

     OKLog.init(OKLogConfig.newBuilder(this)
           .setAppId("Your AppId")
           .setAccountIdConfig(new UserProfile.IAccountIdCallBack() {
               @Override
               public String accountId() {
                   return "Your AccountId";
               }
            })
            .setUuidConfig(new UserProfile.IUUIDCallBack() {
              @Override
               public String uuid() {
                 return "Your UUID";
               }
             })
             .build());
    

方法含义

方法名称 作用
newBuilder() 创建内部类Builder
setDebug(boolean) true:只进行logcat输出; false: release版本,logcat不输出,默认为false
setLogWrapperClassFullNames(String[]) 如果对于OKLog有一层或者多层封装,请设置该参数,以便于在定位调用者className时过滤掉这些封装,找到真正的调用方,请传入全类名
setAppId(String appId) 设置用户应用对应的appId
setAccountId(String accountId) 设置用户帐号信息,可配合OKLog.updateAccountId()手动修改
setUuid(String uuid) 设置用户硬件地址信息,可配合OKLog.updateUUID()手动修改
setAccountIdConfig(UserProfile.IAccountIdCallBack) 设置用户帐号信息回调,优先级高于setAccountId,使用该方式后setAccountId以及OKLog.updateAccountId()手动修改都不会生效
setUuidConfig(UserProfile.IAccountIdCallBack) 设置用户硬件地址信息回调,优先级高于setUuid,使用该方式后setUuid以及OKLog.updateUUID()手动修改都不会生效

功能的开启与服务器的策略下发

通过服务器动态下发策略,来实现日志上报功能的开启以及上报配置好的类型的日志 或者关闭

API 使用说明

API 说明

  • 类 OKLog
变量 描述
boolean V 默认为false,debug情况下初始化为true,针对Verbose级别日志,即OKLog.v()系列方法 我们会严格对应V 变量与 v()系列方法,请务必保持对应关系,否则日志可能不会上传
boolean D 同上,对应Debug级别日志,OKLog.d()系列方法。
boolean I 同上,对应Info级别日志,OKLog.i()系列方法。
boolean W 同上,对应Error级别日志,OKLog.w()系列方法。
boolean E 同上,对应Warn级别日志,OKLog.e()系列方法。
  • 方法详细资料
方法 参数 描述
v String tag, String msg 输出msg, verbose级别
v String tag, Throwable tr 输出tr信息, verbose级别
v String tag, String msg, Throwable tr 输出msg和tr, verbose级别
v String tag, Object... args 输出可变参数args, verbose级别
d 同上述4种 debug级别
i 同上述4种 info级别
w 同上述4种 warn级别
e 同上述4种 error级别

使用

与Android系统自带的Logcat的使用一样,oklog对其进行了拓展,支持打印json map等

    OKLog.d(TAG,"====d");
        OKLog.w(TAG,"====w");
        OKLog.i(TAG,"====i");
        OKLog.e(TAG,"====e");

    OKLog.d("obj",Arrays.asList("foo", "bar"));
    OKLog.json("j", "{ \"key\": 3, \"value\": something}");

    Map<String, String> map = new HashMap<>();
    map.put("key", "value");
    map.put("key1", "value2");
    OKLog.d("map", map);

使用注意点

  1. 如果对于OKLog有一层或者多层封装,请设置setLogWrapperClassFullNames,以便于在定位调用者className时过滤掉这些封装,找到真正的调用方,请传入全类名
  2. 我们会严格对应V 变量与 v()系列方法,请务必保持对应关系,否则日志可能不会上传

results matching ""

    No results matching ""