其他分享
首页 > 其他分享> > iOS日志操作与开发,你真的会重视吗

iOS日志操作与开发,你真的会重视吗

作者:互联网

iOS中常用日志和上报系统浅析

日志和上报

上报

日志

统计分析问题(时长,转化率)

定位问题

记录用户的行为和操作

上传用户的关键操作

记录不符合预期的执行

上传关键路径

上传失败

上传Crash堆栈数据

Crash的收集

收集数据

Debug过程中的展示

上传特定用户日志

收集与展示界面

网络体系

存储体系

framework集成

日志和上报.png

日志系统

CocoaLumberiack

NSLog

提供日志分级功能

记录错误信息

支持多种日志存储和展示

低效的传输ASL(AppleSystemLog)

支持自定义Logger

有大量的磁盘/O操作

高效易于扩展

没有日志分级

兼容ASL等系统级日志功能

代码中不易取到全部的日志

日志系统.png

类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

podfile.png

helloworld!

日志分级

DDLogMessage

区分不同等级的日志

做特殊的业务处理

格式化

DDLogFormatter

加入时间/类名/行数...

xcode控制台输出

Console.app查看

支持分享/上传

使用ASL提供的函数

调用系统标准输入/输出

存储到App沙盒

DDFileLogger

DDTTYLogger

DDASLLogger

日志系统.png

日志系统

存储文件的注意事项

日志分级和格式化

非主线程&线程安全

控制台和ConsoleApp的展示

文件存储的位置/命名

系统级别的API

过期文件的处理

过大文件的处理/文件大小国值

本地沙盒的日志存储

系统是否清理

对于日志业务的理解

文件被意外修改的容错

集成和设计自己的日志系统

KillApp的保存

通用文件的存储和处理

applicationWillTerminateflush及mmap

日志系统.png

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.png

Crash获取

Crash上报的获取

Mach异常

C/C++

NSException

iosCrashRepoter

收集Crash信息/堆栈信息/设备信息...

UncaughtExceptionHandler

处理堆栈及Crash信息

signal信号的捕获

内存检测/卡顿检测/watchdog

存储/上传

开源项目及SDK

上传到自定义服务器-KSCrash/PLCrashReporter

全面的质量跟踪服务-友盟/Bugly..

Crash获取.png

常用上报技术方案对比和分析

上报

无埋点/上报

埋点/上报

具体业务代码处,手动添加埋点代码

基于基于Runtime/消息转发

友盟统计/百度统计

使用MethodSwizzling/Aspect/开源框架

无法更改/代码侵入

hook通用方法(页面时常,接口调用,点击)

预埋使用轮询接口上传日志

动态下发/动态增加删除上报

Crash上报

唯一标识的问题

上报.png

标签:...,存储,重视,Crash,iOS,上报,日志,上传
来源: https://www.cnblogs.com/mysweetAngleBaby/p/16463643.html