其实某种程度上来说,log是一门艺术,而从输出log上往往也能判断程序员的水平。新手往往都很可爱,NSLog(@”Hello World”)会是不变的模式。不得不承认这样的输出如果在恰当的时候也能一击致命,但是它所能带给我们的信息量实在太少了。水平再高一点的程序员大概会在关键事件的时候在保证代码通用性的前提下使用诸如
__func__
之类的东西监测程序流程。高级程序员在log方面就会显得大巧若拙,也许会把整个代码流的行为都进行log,而不漏掉任何一个细节,包括所有的内部状态、各种事件、异常等,完全受掌控的代码和预期中的程序行为是他们成功的关键。而传说中的大牛级人物可能把更多的注意力放在线程,网络等时序上可能出错的地方,无谓的内存释放或是某个超时的网络请求都不会遗漏。
—OneV’s Den
NSLogger是一款强力的日志记录和分析工具,其强大的功能,可以完全替代Xcode自带的Debugger,本文将介绍一些其主要特点和用法。git地址:https://github.com/fpillet/NSLogger
安装
NSLogger由两部分组成,一是需要加入工程中的组件代码,二是查看和管理日志的Mac客户端。组件代码可通过CocoaPods安装,也可通过手动添加(手动添加需要引入CFNetwok.framework和SystemConfiguration.framework)。Mac客户端可以从上面的地址中安装,NSLoggerViewer实际运行图:
效果图.png特点
- 标签输出
- 自定义优先级
- 直接输出图片
- 多线程标记
- 时序控制
- 远程记录
配置使用
- 1 局域网使用
客户端与桌面服务端在同一个局域网下,日志会自动发送到服务端;但是为了避免同一个局域网下有多个服务端,可以用下面的方法避免:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Override point for customization after application launch.
//在应用启动时调用其定义的宏
LoggerSetupBonjourForBuildUser();
return YES;
}
- 2 TCP连接监听
客户端可以向指定的IP地址发送日志具体代码如下:
LoggerSetViewerHost(NULL, (__bridge CFStringRef)@"你的Mac端IP", (UInt32)50000);
然后Mac端 Preferences->Network 打开Listen for loggers on TCP port 端口和客户端填一致;
使用的时候在PCH文件导入下方头文件就可以使用,里面配置好了很多宏,具体怎么用,就看项目具体需求就可以了。
#import <NSLogger/NSLogger.h>
网友评论