如何远程收集日志
日志对于解决问题是至关重要的,而如何获取用户客户端上的日志则一直是个最大的难题。这里给大家推荐2个方法,请大家组合使用。
1. 使用崩溃日志收集工具
bugly和友盟还有很多其它的公司都提供类似的产品,在他们官网上注册账户,申请应用,然后集成sdk到您的应用中。如果应用出现崩溃现象,sdk会自动抓取日志并上传到对应后台,后台会提供一系列的分析工具和统计信息,使用起来十分的方便。建议大家都要加上此类功能。
局限性在于只能收集崩溃日志,普通错误日志或者应用运行情况还必须通过其它方式进行。
2. 野火IM提供的demo日志收集功能
野火IM也提供了一个日志收集功能,可以收集协议栈的日志,对于解决连接不上/收发异常等IM功能错误问题的定位和解决非常重要,使用方法是
更新app-server到0.37版本或以上,包含如下代码
@PostMapping(value = "/logs/{userId}/upload") public Object uploadFiles(@RequestParam("file") MultipartFile file, @PathVariable("userId") String userId) throws IOException { return mService.saveUserLogs(userId, file); }
这里会处理客户端上传的日志,并以"用户ID_日期.xlog"的形式存放在配置文件指定的目录。
更新移动客户端到2020.1.13日以后的版本,在设置-》诊断目录找到上传日志菜单,点击菜单会自动上传日志文件到应用服务。
收集的日志是协议栈日志,使用的是mars的xlog工具,日志经过压缩且有大小限制,因此上传流量消耗和磁盘空间占用也能得到比较好的平衡。日志内容未加密,使用mars提供的工具就可以解开,可以自行分析或者提供给我们分析。
此工具是demo级别,商业使用时需要加上鉴权功能,或者移植到应用原有的应用服务中复用其鉴权功能。另外就是仅能收集协议栈日志,只能解决野火IM的问题,不能收集业务日志。
- 更新客户端到2022.10.15日版本之后,在某个会话中发送一个特殊字符串
*#marslog#
,SDK会自动把最新的协议栈日志发送到当前会话。注意这个字符串在客户端的配置中,可以修改,如果为空则关闭此功能。