版权声明:本文为xing_star原创文章,转载请注明出处!

个人app如何收集用户日志,相信不少人对这个话题感兴趣,本文将结合自己的实际经历,分享下自己的做法。

用邮件收集用户上报日志

在上篇文章http://javaexception.com/archives/144 中,我提到了,客户端日志文件上传这一功能,对于个人开发者而言,个人app如何收集用户日志,值得思考下。先从bugly等第三方的bug收集讲起,他们这些只能收集部分日志信息,不完整,没有完整的上下文,也不利于分析问题,另外是crash或者是exception下才会上报日志,有些业务并不会发生crash或者是exception,这不满足自己的特定需求。如果是用日志文件的方式记录日志呢,这个好,可以有完整的日志,要考虑的就是日志如何上传的问题了。对于日志上传,如果有自己的服务器,那么也好处理,但是对个人开发者而言,还得配置下才能将日志上传到服务器,查阅也麻烦,有的并没有服务器,有没有低成本的实践方式呢,有的,可以考虑用邮件上传日志的方式。

这是在最近的一个app上实践的方案,不一定完美,但是目前适用于自己的app,如果用户量过于庞大,这种方式可能也不行,适合前期阶段。采用的是邮件上传日志文件的方式(日志文件是用xlog收集的日志),邮箱是在163上注册的新邮箱,通过授权码的方式,在客户端发送邮件到指定邮箱,不用担心账号密码泄漏。所有的日志都集中在邮箱中,查阅也相当方便。

先推荐一个开源项目,https://github.com/LillteZheng/ZMail,这个项目封装了邮件api,降低了开发者的使用成本。

app上的界面效果

关键代码

点击日志上传的核心代码如下:

private static boolean isUploadLog = false;private voiduploadLog() {if(isUploadLog) {

Toast.makeText(AboutActivity.this, "日志已上传成功", Toast.LENGTH_SHORT).show();return;

}

File file= new File(getFilesDir().getAbsolutePath() + "/log");if (!file.exists()) {return;

}

StringBuffer sbf= new StringBuffer("用户上传了客户端日志,请查收!n系统参数如下:n");

sbf.append("手机厂商:").append(SystemUtils.getDeviceBrand()).append("n")

.append("手机型号").append(SystemUtils.getSystemModel()).append("n")

.append("手机当前系统语言:").append(SystemUtils.getSystemLanguage()).append("n")

.append("Android系统版本号:").append(SystemUtils.getSystemVersion());

ZMailManager

.fromAddr("xxxxxx@163.com")

.nickName("微信好友检测助手")

.password("xxxxxx")//.host("smtp.163.com")//.isSSLvertify(false)//.port(25)

.subject("[微信好友检测助手日志上报]")

.content(sbf.toString())//.file(imageUrl)

.file(new String[]{getFilesDir().getAbsolutePath() + "/log"})

.toAddrs(new String[]{"xxxxxx@qq.com"})

.listener(newIEmailSendListener() {

@Overridepublic voidsendStart() {

showProgressDialog();

}

@Overridepublic voidsendFailed(String errorMsg) {

hideProgressDialog();

}

@Overridepublic voidsendSuccess() {

hideProgressDialog();

isUploadLog= true;

Toast.makeText(AboutActivity.this, "日志已上传成功", Toast.LENGTH_SHORT).show();

}

})

.send();

}

代码混淆配置:

-keep class javax.mail.** {*;}

-keep class javax.activation.** {*;}

-keep class com.android.zemaillib.** {*;}

-keep class com.sun.mail.** {*;}

-keep class com.sun.activation.registries.** {*;}

-dontwarn java.awt.**

-dontwarn javax.activation.**

参考资料:

其他:

zmail除了可以做日志收集,也可以用来实现用户意见反馈。

java applog_个人app如何收集用户日志相关推荐

  1. 基于Java的webapp_几乎所有基于Java的web app都需要Model 2 (part II) (转)

    几乎所有基于Java的web app都需要Model 2 (part II) (转)[@more@] 几乎所有基于的 app都需要Model 2 当Web容器从客户端接收到一个请求时,控制流开始运行. ...

  2. java io null异常,java.io.IOException:所有收集器的初始化失败。最后一个收集器中的错误是:null...

    我是MapReduce的新手,我试图找到问题的解决方案.我试图链接两个地图reduce作业.第一份工作正在执行,但在第二份工作上我是得到一个错误如下java.io.IOException:所有收集器的 ...

  3. 【hadoop】java 获取 yarn app 信息 报错 ConfiguredRMFailoverProxyProvider - Failing over to rm2

    文章目录 1.概述 1.概述 java 获取 yarn app 信息 报错 ConfiguredRMFailoverProxyProvider - Failing over to rm2 2022-0 ...

  4. 【java干货】java怎么写APP

    用Java(APICloud)开发手机APP 近几年手机开发非常流行,可是ios有自己的一套语言,Android虽然可以用Java开发但是也是要需要从google下载插件,总感觉不那么方便,作为Jav ...

  5. Java社交商城APP+小程序多功能B2B2C商城源码

    Java社交商城APP+小程序多功能B2B2C商城源码 功能介绍 1)用户可通过邀请好友.签到赚取糖果: 2)用户可以通过平台获取想要的商品,领券购买并获取分佣提成: 3) 用户可以通过淘宝链接搜索商 ...

  6. 又有12款APP违规收集用户信息,下架整改

    近日,工信部又通报了一批APP应用下架整改,企业违规收集用户信息何日是头? 2020年12月21日,工信部向社会通报了63家存在侵害用户权益行为APP企业的名单.截至目前,经第三方检测机构核查复检,尚 ...

  7. java 指定垃g1圾收集_【译】Java 14 Hotspot 虚拟机垃圾回收调优指南

    本文主要包括以下内容:优化目标与策略(Ergonomics) 垃圾收集器实现(Garbage Collector Implementation) 影响垃圾收集性能的因素总堆(Total Heap) 年 ...

  8. 「镁客早报」屠呦呦入选“20世纪最伟大人物”;四部门联合治理APP违法收集使用个人信息...

    Space X载人火箭完成静态点火实验:爱尔兰调查Twitter数据泄露事件. 1.屠呦呦入选"20世纪最伟大人物" 1月25日消息 据观察者网报道,本月初,英国BBC新闻网新版块 ...

  9. 「镁客早报」屠呦呦入选“20世纪最伟大人物”;四部门联合治理APP违法收集使用个人信息... 1

    Space X载人火箭完成静态点火实验:爱尔兰调查Twitter数据泄露事件. 1.屠呦呦入选"20世纪最伟大人物" 1月25日消息 据观察者网报道,本月初,英国BBC新闻网新版块 ...

  10. java+uniapp对接app微信支付

    java+uniapp对接app微信支付 1.准备工作 注册app APP接入微信支付,需要先将商户APP在微信开放平台进行注册,登记APP开发参数以生成APPID.具体操作步骤如下: 一.登录微信开 ...

最新文章

  1. Styling Alert controls in Flex using the StyleManager class and setStyle() methods
  2. 鸡兔同笼 n为总数,m为总腿数,a为鸡,b为兔
  3. mysql空间是什么格式_MySQL数据类型 - 空间数据类型 (6)
  4. C++ STL标准模板库(queue)
  5. 剑指offer 面试题49. 丑数
  6. Spring-jdbc-AbstractRoutingDataSource
  7. 探讨SQL Server 2005的评价函数
  8. 手贱拆笔记本清灰记录
  9. 透过 ASP.NET 和数据库读写图片
  10. 10010序列检测器的三段式状态机实现(verilog)
  11. Mnist数据集解析
  12. php用jspstudy怎么运行,JspStudy如何设置PHP根目录可编辑
  13. Python2.7利用xpath爬取韩寒博客(多线程版)
  14. H5上传从微信保存的图片提示格式不对
  15. UVa 10361 自动作诗机
  16. word中插入或更新自动目录后,正文内容也变成了目录的问题
  17. 关于win11右键的慢问题的建议
  18. TexturePacker 图片加密
  19. 四川锦城学院计算机专业好不,四川大学锦城学院计算机专业如何?
  20. android 获取粗略位置_android – 如何使用Wifi或GSM或GPS获取粗略的位置,以哪一个可用?...

热门文章

  1. python改错题重要的事情说三遍_5个很好的Python面试题问题答案及分析
  2. 安装RabbitMQ无法访问(http://localhost:15672)解决方案
  3. redis分布式锁学习总结
  4. 软件设计原则(一) 单一职责原则
  5. Java 注解Annotation总结二
  6. Spring Cloud Zuul路由网关(学习总结)
  7. mysql把A表的数据插入到B表
  8. 学习Scala:孤立对象的实现原理
  9. 练习1,从文件到数据库
  10. 使用 Document!X 为自己的dll生成一个漂亮的说明文档