如何在Objective-C中打印日志记录
来源:互联网 发布:推推棒淘宝店零食 编辑:程序博客网 时间:2024/04/28 12:45
在进行IOS编程的过程中,中会遇到这样一个问题:如果在代码中写了很多NSLog()函数,来确定程序的运行进程,当项目越写越大,因NSLog带来的末端输出信息会越来越多,这是已经很不难分清每个 NSLog函数在程序的那个位置了。因此,如果末端的输出信息中包含了这个NSLog()所在的上下文信息,比如那个文件中的哪个方法调用的,在哪一行等等,这样就很明了了。
其实,C预处理器提供了很多关于当前文件、行号或者功能信息的标准宏。而且,OC中的隐含参数_cmd会给出当前选择的方法等信息,如果在你的NSLog()中加入这些信息,对于你调试或者错误处理一定能提供有益的参考。
下面把最常用的宏和表达式写出来说明
上面两张图是我从苹果开发文档上截取的图
英文已经讲的很详细了,下面我演示一下上面几个函数的用法
- (void)viewDidLoad{ [super viewDidLoad];// [self addAView];// [self addAButton]; NSMutableArray * array = [[NSMutableArray alloc]initWithCapacity:0]; NSLog(@"%s:%d someObject=%@", __func__, __LINE__, array); [array addObject:@"iOS"]; NSLog(@"%s:%d someObject=%@", __func__, __LINE__, array);}
运行后控制台打印的结果为:2014-01-23 15:55:40.814 test[2994:70b] -[ViewController viewDidLoad]:24 someObject=()2014-01-23 15:55:40.815 test[2994:70b] -[ViewController viewDidLoad]:26 someObject=( iOS)
NSLog(@"\n%s",__FILE__);
/Users/****/Desktop/文件夹名称/test/test/ViewController.m
NSLog(@"\n%@",[[NSStringstringWithUTF8String:__FILE__]lastPathComponent]);
ViewController.m
下面说一下我项目中的使用:
在应用的****-Prefix.pch文件中有如下代码
//这个宏是得出这段代码做对应的.m文件
#define DEBUG_FILENAME [[[NSString stringWithUTF8String:__FILE__]
componentsSeparatedByString:@"/"] lastObject]
//DEBUG_NEW_FMT(fmt) 这个宏是得到fmt这个对象所处的在哪个.m文件下的哪个函数,并处在这个.m文件的第几行
#define DEBUG_NEW_FMT(fmt) \
[NSString stringWithFormat:@"%s(%@:%d) %@", \
__FUNCTION__, \
DEBUG_FILENAME, \
__LINE__, \
fmt]
//##__VA_ARGS__ 也是一个宏(#define Macro(...) __VA_ARGS__),他的作用是支持可变参数,被省略的参数会被扩展成空串,作用和上面一样,只是重新定义了NSLog()
#define DLog(fmt, ...) NSLog(DEBUG_NEW_FMT(fmt), ##__VA_ARGS__)
//打印空日志,参数0为了消除编译器的警告
#define DEBUG_LOG_NULL NSLog(DEBUG_NEW_FMT(@""),0)
//打印一个变量
#define DEBUG_LOG_VALUE(x, fmt) do { \
DEBUG_LOG(@#x " = " #fmt, x); \
} while(0)
- 如何在Objective-C中打印日志记录
- 在objective-c中打印自定义类
- C/C++/Objective-C 日志记录功能模块
- 如何在VC中记录系统日志
- 如何在 WebDriver 中实现日志记录
- 如何在MySql中记录SQL日志
- 如何在Spark中记录日志
- jni开发中在c文件中打印log日志
- 在日志中如何打印文件、行号、方法名
- 如何在原有的Objective-C中使用Swift和在Swift中使用Objective-C
- 如何使得 HTTP 请求记录在 Domino 的日志中
- Objective-c开发教程--如何在项目中使用AFNetworking
- 在Swift中,如何像Objective-C定义可选接口?
- 在Objective-C中,如何进行内存管理
- 程序那些事:日志记录的作用和方法----如何在程序中记录日志
- 在项目中记录日志
- Objective-C 中一些代码记录
- 记录Objective-C中所有消息
- 从yum安装Cloudera CDH集群
- Sybase 增加已有的设备空间大小
- Linux 计划任务 — crontab
- 访问外网Tomcat不成功
- WhatsApp月活跃用户4.3亿,是如何做到的
- 如何在Objective-C中打印日志记录
- Admob高级技巧
- 如何将负数转换为二进制
- ubuntu 分区
- ActiveMQ 远程监控JMX设置
- XMLHttpRequest+JSON+Web Worker+Web Service后台获取城市天气预报
- C中的volatile用法
- hbase0.96伪分布模式安装
- 最小二乘法实现直线拟合