简介
音视频产品、即时通信都有默认把sdk运行的log输出到本地文件,腾讯云技术支持在帮忙定位问题时,需要这些运行log分析问题。默认输出文件的路径如下表格。可修改输出文件路径、可过滤日志等级、可关闭日志输出。
本地log路径
sdk | 产品线 | 平台 | 日志路径 |
---|---|---|---|
LiteAVSDK | [UGC](https://cloud.tencent.com/document/product/584) | iOS&安卓 | iOS&Mac: sandbox的Documents/log Android: /sdcard/log/tencent/liteav (6.7以前的版本); /sdcard/Android/data/packagename/files/log/tencent/liteav/LiteAV\_日期.xlog(6.8之后的版本); /sdcard/Android/data/packagename/files/log/liteav/LiteAV\_日期.xlog(8.5之后的版本) 补充1:packagename是指安卓app的包名 补充2:9.9版本后,日志文件是后缀名.cLog文件 Windows: %appdata%/tencent/liteav/log (8.7之前的版本);C:\Users\{userId}\AppData\Roaming\liteav\log(8.8之后的版本) Web: 打开浏览器控制台,或使用vConsole记录 SDK 打印信息 小程序: 启用 |
[Player](https://cloud.tencent.com/document/product/881) | iOS&安卓&web | ||
[Smart](https://cloud.tencent.com/document/product/454) | iOS&安卓&小程序 | ||
[TRTC](https://cloud.tencent.com/document/product/647) | iOS&Mac&安卓&小程序&Windows&Web | ||
[Professional](https://cloud.tencent.com/document/product/454/7873#Professional) | iOS&安卓 | ||
[Enterprise](https://cloud.tencent.com/document/product/454/7873#Enterprise) | iOS&安卓 | ||
IMSDK | [IM](https://cloud.tencent.com/document/product/269) | iOS&Mac&安卓&小程序&Windows&Web | iOS&Mac:日志默认路径在 App 目录下:Library/Caches/imsdk\_C\_YYYYMMDD.xlog 安卓:默认日志存储路径为:SD 卡下,/tencent/imsdklogs/packageName/(4.8.10以前的版本路径); /sdcard/Android/data/packageName)/files/log/tencent/imsdk/imsdk\_日期.xlog(4.8.50版本修改成这个新路径了) Windows:.exe文件的同级目录 Web: 打开浏览器控制台,或使用vConsole记录 SDK 打印信息 小程序: 使用vConsole记录打印信息 |
修改log路径
sdk | 产品线 | 平台 | 修改 |
---|---|---|---|
LiteAVSDK | Smart UGC Player Professional Enterprise |
iOS&Mac | //设置日志输出等级,最高级可关闭 [TXLiveBase setLogLevel:LOGLEVEL\_DEBUG]; |
安卓 | //设置日志输出等级,,最高级可关闭 TXLiveBase.setLogLevel(TXLiveConstants.LOG\_LEVEL\_DEBUG); |
||
TRTC | iOS&Mac | //设置输出 Log 级别,最高级可关闭 [TRTCCloud setLogLevel:TRTCLogLevelDebug] //修改日志路径 [TRTCCloud setLogDirPath:(NSString \*)path] |
|
安卓 | //设置输出 Log 级别,最高级可关闭 trtcCloud.setLogLevel(TRTCCloudDef.TRTC\_LOG\_LEVEL\_DEBUG); //修改日志路径 trtcCloud.setLogDirPath(string); |
||
Windows | //设置输出 Log 级别,最高级可关闭 getTRTCCloud()->setLogLevel(TRTC\_LOG\_LEVEL\_DEBUG); //修改日志路径 getTRTCCloud()->setLogDirPath(const char \* path); |
||
IMSDK | IM | iOS&Mac | @interface TIMSdkConfig : NSObject //本地写 log 文件的等级,最高级可关闭 @property(nonatomic,assign) TIMLogLevel logLevel; //log 文件路径,不设置时为默认路径 @property(nonatomic,retain) NSString \* logPath; |
安卓 | //设置写日志等级,最高级可关闭 TIMSdkConfig setLogLevel(@NonNull TIMLogLevel logLevel) //设置日志路径,不设置时为默认路径 TIMSdkConfig setLogPath(@NonNull String logPath) |
||
Windows | static const char\* kTIMSdkConfigConfigFilePath ="sdk\_config\_log\_file\_path" std::string json\_init\_cfg; Json::Value json\_value\_init; json\_value\_init[kTIMSdkConfigConfigFilePath] = path; TIMInit(sdk\_app\_id, json\_value\_init.toStyledString().c\_str()); |
取log常见做法
运行log只输出到用户手机本地,如果是线上项目,向用户取日志往往比较难,建议开发过程中,将手机本地日志上传到自己的存储服务器,方便取日志。
强烈推荐!!!
查看log文件
LiteAVSDK
LiteAVSDK 为了减少 log 的存储体积,对本地存储的 log 文件做了加密,并且限制了 log 数量的大小,所以要查看 log 的文本内容,需要使用 log解压缩工具。
sdk版本9.9之后,日志加密方式改变了,生成的文件是后缀.cLog的文件。新版本的解压缩工具。
工具说明:
1、在你电脑系统要有 python 2.x 环境
2、在终端运行 python decode_mars_log_file.py 就行了(xlog 文件要和 decode_mars_log_file.py放在同一目录下)
IMSDK
IMSDK4.5以前的版本,log文件没有加密,可以直接搜索各个关键事件(version、login、logout、send msg、get msg、recv push、create group、join group、quit group)。
IMSDK4.6以后的版本,log文件加密了,文件后缀是xlog,需要用im解压缩工具解压打开
工具说明:同上
补充说明:
IM消息通信问题,一般需要排查收发两端,所以提供出问题的手机log时,也请提供一下对端的日志,
方便查看发/收消息是否正常。
crash日志
开发过程中遇到crash,或者线上反馈crash,就无法只靠运行log排查定位了。需要排查crash的堆栈信息。
收集crash堆栈信息,有两种方式:
1、手动复现
把手机连接开发工具,操作复现,如果crash了,开发工具的logcat里面,会输出crash堆栈,把logcat日志复制出来,贴成txt文本文件,把文件发给腾讯支持人员。
2、上报堆栈
可以在工程中集成上报crash到云端的三方sdk,比如腾讯bugly。
1、bugly会记录crash堆栈,聚合机型、crash数量、时间点等信息,捕获的信息更全面,推荐集成。
2、bugly页面有查看权限,需要添加腾讯支持人员的QQ号(204356973腾讯云helper、3531448318崩溃专用排查qq号)查看权限,
添加完成后,把crash的bugly页面链接,发给腾讯支持人员。腾讯支持人员就可以登录QQ号,去查看该页面的crash堆栈了。
取sdk版本号
排查crash堆栈,需要确认sdk版本号:
sdk | 平台 | api |
---|---|---|
LiteAVSDK | 安卓 | TXLiveBase.getSDKVersionStr(); |
ios/mac | [TXLiveBase getSDKVersionStr] | |
小程序 | 查看手机微信版本。音视频小程序组件版本,是随微信版本发布的。 | |
webrtc | 查看引入的trtc-js-sdk文件版本 | |
windows | ITRTCCloud.getTRTCShareInstance().getSDKVersion(); | |
IMSDK | 安卓 | TIMManager.getInstance().getVersion(); |
ios/mac | [[TIMManager sharedInstance] GetVersion]; | |
小程序/webim | 查看引入tim-js-sdk文件版本 | |
windows | TIMGetSDKVersion(); |
附
LiteAVSDK -> 安卓 -> log相关api文档;
LiteAVSDK -> ios&Mac -> log相关api文档;
TRTC日志打印类似于LiteAVSDK,参考《腾讯实时音视频(TRTC)如何打印日志》