iOS日志操作与开发,你真的会重视吗
作者:互联网
iOS中常用日志和上报系统浅析
日志和上报
上报
日志
统计分析问题(时长,转化率)
定位问题
记录用户的行为和操作
上传用户的关键操作
记录不符合预期的执行
上传关键路径
上传失败
上传Crash堆栈数据
Crash的收集
收集数据
Debug过程中的展示
上传特定用户日志
收集与展示界面
网络体系
存储体系
framework集成
日志系统
CocoaLumberiack
NSLog
提供日志分级功能
记录错误信息
支持多种日志存储和展示
低效的传输ASL(AppleSystemLog)
支持自定义Logger
有大量的磁盘/O操作
高效易于扩展
没有日志分级
兼容ASL等系统级日志功能
代码中不易取到全部的日志
类CocoaLumberjack日志框架架构浅析
hellogit:master)
podfile
cat
hello'do
target
AFNetworking
pod
sDWedImage
pod
podCocoaLumberjack
end
helLogit:masterxpodupdate
Updateallipods
Updatinglocalspecsrepositories
CocoaPods1.10.1isavailable
cocoapods
To
updateuse:
sudogeminstall
Formoreinformation,seehttps://blog.cocoapodsgandthe
CHANGELOGf
versiondthttps://gthub.om/ocood/ocoodreleases/ta/1
Analyzingdependencies
DownLoadingdependencies
GeneratingPodsproject
gclientproject
Integratingcl
mthePodfileand
Pod
from
installationcomplete!Therearedependencie
podsinstalled
!]
ontarget
Automaticallyassiginaomho
becausenoplatforml
rmwas
specified,PLeasespecifyaplatformforthis
https://guides.cocoapods.org/tax/pofiletm
yourPodfile.See
helLoqit:master
helloworld!
日志分级
DDLogMessage
区分不同等级的日志
做特殊的业务处理
格式化
DDLogFormatter
加入时间/类名/行数...
xcode控制台输出
Console.app查看
支持分享/上传
使用ASL提供的函数
调用系统标准输入/输出
存储到App沙盒
DDFileLogger
DDTTYLogger
DDASLLogger
日志系统
存储文件的注意事项
日志分级和格式化
非主线程&线程安全
控制台和ConsoleApp的展示
文件存储的位置/命名
系统级别的API
过期文件的处理
过大文件的处理/文件大小国值
本地沙盒的日志存储
系统是否清理
对于日志业务的理解
文件被意外修改的容错
集成和设计自己的日志系统
KillApp的保存
通用文件的存储和处理
applicationWillTerminateflush及mmap
Crash的类型介绍和常用收集方案
Crash
ios中的Crash种类
0libobjc.A.dylib0x000000019468bbdcobjcmged(jt)
1CoreTelephony0x0000001887490catioutio
CTServerState:sendNotihcationyinco
系统级:Signal信号
2lbdispatch.dylilbox0000000194cc9994diathcalck
Mach内核异常时发送Unix信号
3libdispatch.dylb0x0000009i
libdispatch.dylibox000000019d4iq
eue-drain
SIGKILL/SIGSEGV...
einvok
5libdispatch.dylibx00009cccadiq
应用级:NSException
OCoreFoundation0x0000001a9927cexctionoo
应用或自定义异常
1libobjc.A.dylibox000000038bicexctionthw
2CoreFoundation0x00000001a9f05ab8-odeint
NSlnvalidArgumentException...
3CoreFoundation0x00000001a9feeac4
forwarding_
CoreFoundation0x00000001a9ff075c.CFfowarding
其它
5UIKitcore0x00000001d6bafc54UiLablseText]+7
Crash获取
Crash上报的获取
Mach异常
C/C++
NSException
iosCrashRepoter
收集Crash信息/堆栈信息/设备信息...
UncaughtExceptionHandler
处理堆栈及Crash信息
signal信号的捕获
内存检测/卡顿检测/watchdog
存储/上传
开源项目及SDK
上传到自定义服务器-KSCrash/PLCrashReporter
全面的质量跟踪服务-友盟/Bugly..
常用上报技术方案对比和分析
上报
无埋点/上报
埋点/上报
具体业务代码处,手动添加埋点代码
基于基于Runtime/消息转发
友盟统计/百度统计
使用MethodSwizzling/Aspect/开源框架
无法更改/代码侵入
hook通用方法(页面时常,接口调用,点击)
预埋使用轮询接口上传日志
动态下发/动态增加删除上报
Crash上报
唯一标识的问题
标签:...,存储,重视,Crash,iOS,上报,日志,上传 来源: https://www.cnblogs.com/mysweetAngleBaby/p/16463643.html