简介
音视频产品、即时通信都有默认把sdk运行的log输出到本地文件,腾讯云技术支持在帮忙定位问题时,需要这些运行log分析问题。默认输出文件的路径如下表格。可修改输出文件路径、可过滤日志等级、可关闭日志输出。
本地log路径
sdk | 产品线 | 平台 | 日志路径 |
---|---|---|---|
LiteAVSDK | UGC | 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}AppDataRoamingliteavlog(8.8之后的版本)Web: 打开浏览器控制台,或使用vConsole记录 SDK 打印信息 小程序: 启用和标签的debug属性,使用vConsole记录打印信息 |
Player | iOS&安卓&web | ||
Smart | iOS&安卓&小程序 | ||
TRTC | iOS&Mac&安卓&小程序&Windows&Web | ||
Professional | iOS&安卓 | ||
Enterprise | iOS&安卓 | ||
IMSDK | IM | 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 | SmartUGCPlayerProfessionalEnterprise | 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_initkTIMSdkConfigConfigFilePath = path; TIMInit(sdk_app_id, json_value_init.toStyledString().c_str()); |
取log常见做法
运行log只输出到用户手机本地,如果是线上项目,向用户取日志往往比较难,建议开发过程中,将手机本地日志上传到自己的存储服务器,方便取日志。
LIteAVSDK 生成日志策略
- log 目录有最大 size 限制,不会超过 200M,超过的时候会从最旧的 log 文件删除。
- log 只保留最近 10天的,过期的会删除。
crash日志
开发过程中遇到crash,或者线上反馈crash,就无法只靠运行log排查定位了。需要排查crash的堆栈信息。
收集crash堆栈信息,有两种方式:
1、手动复现
把手机连接开发工具,操作复现,如果crash了,开发工具的logcat里面,会输出crash堆栈,把logcat日志复制出来,贴成txt文本文件,把文件发给腾讯支持人员。
2、上报堆栈
可以在工程中集成上报crash到云端的三方sdk,比如腾讯bugly。
代码语言:javascript复制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文档;
IMSDK -> 安卓 -> log相关api文档;
IMSDK -> ios&Mac -> log相关文档:
TRTC日志打印类似于LiteAVSDK,参考《腾讯实时音视频(TRTC)如何打印日志》