美团外卖背后的日志
原文地址;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。