开源框架:iConsole

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 引言: 官方的简介加少许语义上的修改: iConsole是一个简单的,无依赖的控制台管理类,让iPhone在运行App时记录更多用户使用时的记录.

引言:

官方的简介加少许语义上的修改:

iConsole是一个简单的,无依赖的控制台管理类,让iPhone在运行App时记录更多用户使用时的记录. 它可以准确的定位程序所遇到的错误,内置在应用中,而无需连接到XCode调试器即可查询崩溃日志并保存起来. 所以,普通用户可以主动提交在使用时遇到的错误日志.


如何开始使用?

开源项目下载地址:猛击此处

下载以后翻开项目的源代码找到如下两个文件夹,分别是:


将这两个文件夹拖动要使用的工程中,此时无需任何其他依赖项的设置.


如何编写代码?

在使用其功能之前有一点要注意,需要将AppDelegate里初始的UIWindow需要以iConsoleWindow来初始化.

如果项目中没有使用StoryBoard来初始化工程,则进行如下修改即可:

- (void)applicationDidFinishLaunching:(UIApplication *)application
{
    _window = [[iConsoleWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
	_window.rootViewController = [[HelloWorldViewController alloc] init];
    [_window makeKeyAndVisible];
}

如果是通过StoryBoard来初始化工程的话需要进入如下修改:

1:第一步将工程设置里的Main StoryBoard清空


2:applicationDidFinishLaunching里面添加如下代码:

//启动iConsonle
self.window = [[iConsoleWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
self.window.rootViewController = [[UIStoryboard storyboardWithName:MainStoryBoardName bundle:nil] instantiateInitialViewController];


//other load code


[self.window makeKeyAndVisible];

至于其它代码请写在 other load code的位置, 不然会 Crash.原理是 UIWindow


到此,iConsole的部署及初始化工作已经完成,iConsole会默默的记录App产品的Crash信息. 接下来介绍其强大的功能及细节.


iConsole提供了4种记录日程的方式,分别是:

1:信息

2:警告

3:错误

4:崩溃

通过以上4种记录的级别由开发者自行管理其分类,以备App脱离XCode调试器时,辅助开发者通过日志理解错误的具体位置.

代码如下:

[iConsole info:@"记录一条普通级"];
[iConsole warn:@"记录一条警告级"];
[iConsole error:@"记录一条错误级"];
[iConsole crash:@"记录一条崩溃级"];

iConsole 默认记录的日志条数是1000条. 如果日志记录到上限时,会删除最早的一条,如此循环,可通过如下属性设置上下限:

[[iConsole sharedConsole] setMaxLogItems:2000];

当我们需要查看iConsole的控制台时,可以通过三种方式来启动控制台:

1:主动调用

[iConsole show];

2:三跟手指由下往上滑动. 模拟器两根手指,  默认启动

[iConsole sharedConsole].simulatorTouchesToShow = YES;
[iConsole sharedConsole].deviceTouchesToShow = YES;

3:摇动手机启动  默认禁用

[iConsole sharedConsole].deviceShakeToShow = YES;

成功进入控制台以后,可以看到有一个输入区域,等待用户输入命令,如下图所示:


此时需要实现iConsole唯一的一个代理,用来捕捉命令行的值:

1:代理赋值

[iConsole sharedConsole].delegate = self;

2:实现接口方法

- (void)handleConsoleCommand:(NSString *)command
{
	if ([command isEqualToString:@"version"])
	{
		[iConsole info:@"%@ version %@",
         [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleName"],
		 [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleVersion"]];
	}
	else 
	{
		[iConsole error:@"unrecognised command, try 'version' instead"];
	}
}

这个代理到底有什么用?

这里的权利完全交给了开发者,通过自定义一些命令来输出一些有利于调试的日志信息.

比如version命令,一旦成功进入代理以后,将会自动打印当前App的程序版本

更改的辅助命令由开发者根据个性化需求自由定制


另外iConsole的控制台也可以进行少许的样式修改:

//branding and feedback

@property (nonatomic, copy) NSString *infoString;//控制台简短介绍
@property (nonatomic, copy) NSString *inputPlaceholderString;//命令行空值提示
@property (nonatomic, copy) NSString *logSubmissionEmail;//日志所发送的邮件地址

//styling

@property (nonatomic, strong) UIColor *backgroundColor;//背景颜色
@property (nonatomic, strong) UIColor *textColor;//文字颜色
@property (nonatomic, assign) UIScrollViewIndicatorStyle indicatorStyle;//这个呢?


额外的说明:

模拟一个Crash 用于尝试使用iConsole 的功能,代码如下:

[[NSException exceptionWithName:@"什么类型的崩溃异常?" reason:@"对崩溃进行些说明?" userInfo:nil] raise];

总结:

iConsole在于对XCode控制台脱离时依旧能保持调试的能力,方面辅助开发者捕捉致命的BUG. 建议阅读本文所有的开发者都是用.













相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
关系型数据库 API 数据库
盘点10个.NetCore实用的开源框架项目
盘点10个.NetCore实用的开源框架项目
977 0
盘点10个.NetCore实用的开源框架项目
|
5月前
|
数据采集 机器学习/深度学习 编解码
视频生成框架EasyAnimate正式开源!
EasyAnimate是人工智能平台PAI自主研发的DiT-based视频生成框架,它提供了完整的高清长视频生成解决方案,包括视频数据预处理、VAE训练、DiT训练、模型推理和模型评测等。可以使用EasyAnimate进行任意风格视频模型的训练和推理,还可以在预训练模型的基础上,通过少量图片的LoRA微调来改变生成视频的风格。
|
4月前
|
JavaScript 前端开发 IDE
|
6月前
|
开发框架 Java 数据安全/隐私保护
SpringBlade、若依框架和人人开源框架对比
SpringBlade、若依框架和人人开源框架对比
|
12月前
|
小程序 JavaScript 前端开发
kbone 是什么?这可能是最好的小程序开源框架
kbone 是什么?这可能是最好的小程序开源框架
123 0
kbone 是什么?这可能是最好的小程序开源框架
|
设计模式 数据可视化 JavaScript
dlvm-netcore 开源框架
DLVM 是一个集数据库、逻辑、视图及模型为一体的并涵盖了常用基础套件,以 NetCore 为主的底层框架。具备安全性、可扩展性、可配置性及可视化操作等优点,并且具有一键创建模块的功能。
169 0
dlvm-netcore 开源框架
|
XML Java Maven
阿里开源框架Jarslink1.6.1新特性
阿里开源框架Jarslink1.6.1新特性
204 0
|
SQL JSON C#
C#开源框架
原文:C#开源框架 Json.NET  http://json.codeplex.com/ Json.Net 是一个读写Json效率比较高的.Net框架.Json.Net 使得在.Net环境下使用Json更加简单。
1722 0
|
Android开发
框架及开源项目推荐
25类Android常用开源框架 Android开源项目-微Yue电子书阅读(MD设计)
871 0
下一篇
无影云桌面