日志系统功能包括:
1.日志开关。只有开发版本开启日志,因为日志还是比较耗性能的。。。
2.堆栈日志界面:ERROR时弹出界面,该界面显示错误的堆栈日志。大半部分错误日志是不会导致崩溃,如果不弹窗qa可能会漏掉一些重要的log信息。
3.接入SRDebugger,方便在qa测试时,在测试机查看详细的日志信息,方便定位错误出现的原因。
4.FPS帧率的显示
5.游戏正式上线以后,我们很难拿到用户的错误日志,这时候我们需要把错误的日志上传到我们的服务器
6.当游戏崩溃时我们是拿不到unity打印的日志的,这时候就需要接入FireBase了,它可以帮我们把崩溃的详细日志上传到网页上,方便我们查看
日志系统目标用户:
1.qa、运营等测试人员(可以拿到测试机),需要在手机上实现可视化的日志堆栈,方便查阅日志(当然你也可以把手机连到Android Studio和Xcode查看日志,就是比较麻烦而已),对定位bug有很大帮助。
2.用户(获取不到测试机),需要把日志上传到服务器,崩溃日志需要接入FireBase,这样就可以在FB后台看到崩溃的堆栈信息。
一、手机上显示log信息:SRDebugger插件
SRDebugger文档:https://www.stompyrobot.uk/tools/srdebugger/documentation/
SRDebugger下载:https://assetstore.unity.com/packages/tools/gui/srdebugger-console-tools-on-device-27688,
嗯,这个需要30美刀~
SRDebugger界面示例:SRDebugger可以获取当前运行系统的信息,包括操作系统、处理器、显卡等硬件信息。
SRDebugger可以查看所有的程序运行日志,包括使用Debug.Log系列打印的日志,或是其他的未捕获异常。
SRDebugger可以监控整个项目的内存使用信息,手动卸载资源,手动进行GC垃圾回收。
二、日志开关及堆栈信息获取
日志开关无非就是框架封装一层日志接口,所有业务的日志打印都走这个接口,在根据条件判断是否调用Debug.Log方法。例如:
1 | public void Log(string log) |
日志堆栈信息获取:Application.logMessageReceived接口。每次接收到日志消息,都会触发的事件。注意在logMessageReceived回调里打印任何日志都不会生效(避免死循环)。
1 | using UnityEngine; |
1 | // |
logString:日志信息。stackTrace:日志的详细堆栈信息。
那么错误弹窗就是将错误信息以及错误的堆栈信息赋值给Text并显示在界面上。
例如
1 | public void DevelopLog(string logString, string stackTrace, LogType type) |
保存服务端的话就是将上面的result值传给服务端,由服务端保存。当然你也可以额外添加一些参数,例如版本、时间、机型等。例如
string result = string.Format(“Version:{0}\nTime:{0}\nLogString:{1}\nStackTrace:{2}”, Config.Version, Time.time, logString, stackTrace);
三、崩溃信息上传FireBase
Android API文档:https://firebase.google.com/docs/android/setup?hl=zh-cn
Ios API文档:https://firebase.google.com/docs/ios/setup?hl=zh-cn
这个两个文档有详细的FireBase后台配置的步骤,以及GoogleService-Info.plist 、google-services.json文件的生成(这两个文件需要放在你的工程目录里)
如果你的sdk或者运营大哥帮你配置好了并给了你GoogleService-Info.plist 、google-services.json文件的话,只需要参考以下步骤就好了。
android:只需要两步,记得把你的google-services.json文件拷贝到项目里
参考:https://firebase.google.com/docs/crashlytics/get-started?platform=android#android
1.在项目级 build.gradle 中,将您的 google-services 更新为 3.1.2 或更高版本,然后添加 Crashlytics 代码库和依赖项:
1 | buildscript { |
2.在应用级 build.gradle 中,将 firebase-core 更新为 v11.4.2 或更高版本,然后添加 Crashlytics 依赖项:
1 | apply plugin: 'com.android.application' |
ios参考:https://firebase.google.com/docs/crashlytics/get-started?platform=ios#android
1.拉取代码,打开 Podfile,然后添加以下行:
pod ‘Fabric’, ‘> 1.10.2’> 3.13.3’
pod ‘Crashlytics’, ‘
2.初始化
如果你的ios端提示dsym未上传,可以用命令行上传(比较耗时间,建议只在正式包上传),命令如下:
1 | /path/to/pods/directory/Fabric/upload-symbols -gsp /path/to/GoogleService-Info.plist -p ios /path/to/dSYMs |
DSYM丢失参考api:https://firebase.google.com/docs/crashlytics/get-deobfuscated-reports?authuser=0