美团外卖背后的日志
原文地址;https://mp.weixin.qq.com/s/tONyQVVM3yLqw3WdqudW9g
其实不管你是做移动端开发还是服务端开发,都会遇到线上崩溃和用户反馈。
But
如果你是移动端开发,尤其是Android开发,可能会经常遇到如下场景:
运营 + 产品:有用户反馈,我们的应用经常发生崩溃、功能不能用、悬浮窗打不开、图标显示有问题 ... ...
开发:你们查下他的手机型号、系统版本号、ROM版本号
运营 + 产品:数据查出来了,顺便还找了一台同机型
开发:我这里没复现啊,问问测试能复现吗?
来来回回,可能一天都解决不了这个问题,因为Android手机型号、版本太多了(无力吐槽),再加线上环境比较复杂,需要足够的信息才能定位到问题,这时日志就显得极为重要了。
今天要推荐的是爱好开源的美团技术团队开源的Logan。
它是美团点评集团移动端基础日志组件,这个名称是Log和An的组合,代表个体日志服务。
Logan具备两个核心能力:本地存储和日志捞取。
作为基础日志库,Logan已经接入了美团点评集团众多日志系统,例如端到端日志、用户行为日志、代码级日志、崩溃日志等。我们每天能顺畅的点外卖、订酒店都离不开幕后英雄Logan对几十亿量级的移动端日志的处理。
由于Logan目前只开源了 Android 和 IOS,我们看看 Android 和 IOS 开发中如何安装和应用Logan。
Android
安装
在项目的build.gradle文件中添加:
compile 'com.dianping.android.sdk:logan:1.1.0'
使用
LoganConfig config = new LoganConfig.Builder() .setCachePath(getApplicationContext().getFilesDir().getAbsolutePath()) .setPath(getApplicationContext().getExternalFilesDir(null).getAbsolutePath() + File.separator + "logan_v1") .setEncryptKey16("0123456789012345".getBytes()) .setEncryptIV16("0123456789012345".getBytes()) .build(); Logan.init(config);
初始化之后,写入日志:
Logan.w("Thank you for attention GitHub Choiceness", 1);
IOS
安装
Logan支持以CocoaPods方式将Logan库引入到项目中,在Xcode项目中引入Logan,podfile添加Logan。
source 'https://github.com/CocoaPods/Specs.git' platform :ios, '8.0' target 'TargetName' do pod 'Logan', '~> 1.1.1' end
然后运行以下命令:
$ pod install
使用
在使用之前,必须初始化Logan,例如:
#import "Logan.h" NSData *keydata = [@"0123456789012345" dataUsingEncoding:NSUTF8StringEncoding]; NSData *ivdata = [@"0123456789012345" dataUsingEncoding:NSUTF8StringEncoding]; uint64_t file_max = 10 * 1024 * 1024; // logan初始化,传入16位key,16位iv,写入文件最大大小(byte) loganInit(keydata, ivdata, file_max); #if DEBUG loganUseASL(YES); #endif
初始化之后,写入日志:
logan(1, @"Thank you for attention GitHub Choiceness");
是不是很不错呢?赶紧去收藏 star 一波吧!
开源项目地址:https://github.com/Meituan-Dianping/Logan
开源项目团队:美团技术团队
更多Android进阶技术,职业生涯规划,产品,思维,行业观察,谈天说地。加Android架
构师群;701740775。
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
一道简单的 Java 笔试题,但值得很多人反思!
前言 面试别人,对我来说是一件新奇事,以前都是别人面试我。我清楚地知道,我在的地域与公司,难以吸引到中国的一流软件人才。所以,我特地调低了期望,很少问什么深入的技术问题,只问一些广泛的、基础的。我只要最终给Leader一句“这个人技术还行/很好/非常好”,就行了。至于其它能力、综合水平,由别人把关。为此,在挑选唯一的一道笔试题时,我特别地上心。 首先,我不敢用网上那些广为流传的,比如Leetcode、《程序员面试宝典》里的题——这些都太难了!正儿八经做,其实很少有人能在1小时内完美做出来,除非之前遇到过。我本人也并非什么思维敏捷的牛人,不然也不会混得这么惨。正所谓己所不欲,勿施于人,我也不希望以后别人考我特别麻烦的算法题,所以自创了一道特别简单的。 其次,对(Android平台的)Java程序员来说,大多数情况下不需要写什么复杂的算法。相反,Java层主要做的是界面控制、业务逻辑、数据流之类的,更提倡代码的简单和可读,尽量用既有的公共类库,不惜损失一些运行效率。拿一道复杂的算法题,考一个Java程序员,多少有点刁难人。 最后,还是那个薪资待遇和人才梯度问题。没有Google的工资,就别...
- 下一篇
一张图看懂大牛直播SDK的模块化组合
如上图所示,此Demo系大牛直播SDK的android平台SmartRelayDemoV2工程,此demo涵盖以下功能: 1. RTMP/RTSP直播播放(支持大牛直播播放SDK全部功能,如软、硬解码设置、实时静音、快照、view旋转、秒开等); 2. RTMP/RTSP流录制(支持音频转AAC后录制,支持只录制音频或视频,文件自动切分等); 3. RTMP/RTSP流转RTMP推送(行业内转发延迟最低,支持同时转发多路); 4. 内置RTSP网关(对外提供RTSP服务,可同时开启多个service,提供小规模并发访问); 好多开发者以为只是单个功能展示,实则不然,大牛直播SDK的灵活之处在于,以上4个功能模块,可以随意同时组合使用,亦或功能模块全开,资源占用,行业内最低,不服来比。 如:RTSP流播放的同时,转发到其他RTMP服务器,并同步开启录像功能,本地录像,并对外提供RTSP服务(作为拉流网关服务器)。 附4个模块功能列表: Windows/Android/iOS RTMP、RTSP直播播放器SDK 如不单独说明,系Windows、Android、iOS全平台支持。 [支持播放...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS8编译安装MySQL8.0.19
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- CentOS7,CentOS8安装Elasticsearch6.8.6
- CentOS7安装Docker,走上虚拟化容器引擎之路
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- Linux系统CentOS6、CentOS7手动修改IP地址