源代码获取请到github:https://github.com/DrJia/AndroidLogCollector

已经做成sdk的形式,源代码已公开,源代码看不懂的请自行google。

假设想定制适应自己app的sdk请自行fork。

AndroidLogCollector

android
app崩溃日志收集sdk 1.0

作者:贾博士

崩溃日志收集方法:

1.LogCollector是lib包,在须要加入崩溃日志sdk的project中导入此包。

2.导入lib后,在自己的project的AndroidManifest.xml文件里增加权限:

        <uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />

3.在自己的project中重写自己的application,在oncreate中增加

    LogCollector.init(getApplicationContext(), UPLOAD_URL, params);

PS:重写自己的application记得在Manifest注冊

參数:

1.Context

2.String UPLOAD_URL ,上传地址url,支持http和https方式,post方法。

3.HttpParameters params ,自己定义的类,用于post上传其它參数。

说明:

发生崩溃后,日志会保存在 /data/data/{your package name}/files/ 文件夹下

日志仅仅有一个文件,多条数据日志保存

日志文件上传成功后会自己主动删除,上传不成功则不删除

日志格式能够依据自己的需求在源代码中修改

http的post传的数据也可自行改动

參考代码:

    public class MyApplication extends Application {
//post method , upload logfile url,replace your site . support http or https
private static final String UPLOAD_URL = "http://xxxxxxxx"; @Override
public void onCreate() {
super.onCreate(); //upload logfile , post params.
HttpParameters params = new HttpParameters();
params.add("key1", "value1");
params.add("key2", "value2");
params.add("key3", "value3");
//.......
//replace your key and value; boolean isDebug = true;
//set debug mode , you can see debug log , and also you can get logfile in sdcard;
LogCollector.setDebugMode(isDebug);
LogCollector.init(getApplicationContext(), UPLOAD_URL, params);//params can be null
}
}

上传日志方法:

须要先在application中运行init,

然后在不论什么位置加入例如以下代码:

    LogCollector.upload(boolean isWifiOnly);

參数:

1.boolean isWifiOnly; true代表仅仅在wifi情况下发送,false代表有网的情况下就发送(包含流量和wifi)

您能够在service,activity等位置的合适时机触发,不会卡界面也不会影响性能。

參考代码:

    private void uploadLogFile(){
boolean isWifiOnly = true;//only wifi mode can upload
LogCollector.upload(isWifiOnly);//upload at the right time
}

调试:

在init之前调用

    LogCollector.setDebugMode(boolean isDebug);

说明:

1.开启调试后能够看到堆栈的log信息

2.同一时候能够在sd卡下的Android/data/{your package name}/Log/ 文件夹下能够查看保存的崩溃log日志

该文件夹下的日志不会自己主动删除,请及时清空,避免占用空间

android app崩溃日志收集以及上传的更多相关文章

  1. 捕android程序崩溃日志

    主要类别: package com.example.callstatus; import java.io.File; import java.io.FileOutputStream; import j ...

  2. Android利用网络编程HttpClient批量上传(一个)

    请尊重他人的劳动成果.转载请注明出处:Android网络编程之使用HttpClient批量上传文件 我曾在<Android网络编程之使用HTTP訪问网络资源>一文中介绍过HttpCient ...

  3. Android okHttp网络请求之文件上传下载

    前言: 前面介绍了基于okHttp的get.post基本使用(http://www.cnblogs.com/whoislcj/p/5526431.html),今天来实现一下基于okHttp的文件上传. ...

  4. iOS系统app崩溃日志手动符号化

    iOS系统app崩溃日志手动符号化步骤: 1.在桌面建立一个crash文件夹,将symbolicatecrash工具..crash文件..dSYM文件放到该文件夹中 a.如何查询symbolicate ...

  5. 【Android】图片(文件)上传的请求分析结构

    怎么在android中上传文件,即怎么用Java向服务器上传文件.上传图片,这是个老问题了,在网上能搜到现成的代码,很多朋友用起来也比较熟了,但是为什么这么写,可能很多朋友并不清楚,这篇文章就来分析一 ...

  6. 使用dSYM分析App崩溃日志

    前言 我们在开发App过程中,因为连接到控制台,所以遇到问题会很容易找到问题代码.但是对于线上的App出现Crash的时候,我们不可能通过这种方式,也不现实,所以我们只能通过收集Crash信息,来解决 ...

  7. Android之崩溃日志管理

    文章大纲 一.Android崩溃日志管理简介二.崩溃日志管理实战三.项目源码下载   一.Android崩溃日志管理简介 1. 什么是android崩溃日志管理   开发中有些地方未注意可能造成异常抛 ...

  8. Android中Socket大文件断点上传

    原文:http://blog.csdn.net/shimiso/article/details/8529633 什么是Socket? 所谓Socket通常也称作“套接字”,用于描述IP地址和端口,是一 ...

  9. 如何通过友盟分析发布后App崩溃日志-b

    要分析崩溃日志,首先需要保留发布时的编译出来的.xcarchive文件.这个文件包含了.DSYM文件. 我一般的做法是,发布成功后,把这个文件.xcarchive直接提交到代码版本库对应的版本分支里, ...

随机推荐

  1. Jetty:配置JSP支持

    选择JSP实现 从Jetty-9.2開始,使用Apache Jasper作为默认JSP容器实现.在前面的版本号中使用的是Glassfish Jasper,在后面的版本号中也能够继续使用它. Jetty ...

  2. 获取信息的有关Windows API(最有意思是OpenProcess和GetProcessMemoryInfo)

    1.窗口信息MS为我们提供了打开特定桌面和枚举桌面窗口的函数.hDesk = OpenDesktop(lpszDesktop, 0, FALSE, DESKTOP_ENUMERATE);// 打开我们 ...

  3. 【ASP.NET Web API教程】5.5 ASP.NET Web API中的HTTP Cookie

    原文:[ASP.NET Web API教程]5.5 ASP.NET Web API中的HTTP Cookie 5.5 HTTP Cookies in ASP.NET Web API 5.5 ASP.N ...

  4. windows下RabbitMQ 监控

    RabbitMQ的监控很简单,网上也有很多资料,但是大都不详细,让人云里雾里,我这里详细总结下. RabbitMQ本身提供了一个web的监控页面,只需要简单的几部命令行就可以访问这个页面了. 1.打开 ...

  5. C++中出现的计算机术语1

    access labels(訪问标号) 类的成员能够定义为 private,这能够防止使用该类型的代码訪问该成员. 成员还能够定义为 public,这将使该整个程序中都可訪问成员.  address( ...

  6. Swift - 类扩展(extension)

    Swift语言的类扩展是一个强大的工具,我们可以通过类扩展完成如下事情: 1,给已有的类添加计算属性和计算静态属性 2,定义新的实例方法和类方法 3,提供新的构造器 4,定义下标脚本 5,是一个已有的 ...

  7. uva Matrix Decompressing (行列模型)

    Matrix Decompressing 题目:    给出一个矩阵的前i行,前j列的和.要求你求出满足的矩阵. 矩阵的数范围在[1,20].   一開始就坑在了这里.没读细致题目. 囧...   事 ...

  8. HDU4911-Inversion(树状数组)

    Inversion Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others) Tota ...

  9. 创作gtk源码级vim帮助文档 tags

    创作gtk源码级vim帮助文档 tags 缘由 那只有看到源码了.在linux源码上有个网站 http://lxr.linux.no /+trees, 可以很方面的查出相应版本的代码实现,gtk没有. ...

  10. 它们的定义Adapterg在etView( )正在使用View.setTag()与不同的是不使用。

    首先看使用Tag案件. @Override public View getView(int position, View view, ViewGroup group) { ViewHolder hol ...