Ios日志打印
2015-08-13 16:48
330 查看
Q:如何打印当前的函数和行号?A:我们可以在打印时使用一些预编译宏作为打印参数,来打印当前的函数和行号。如:![](https://code.csdn.net/assets/CODE_ico.png)
NSLog(@"%s:%d obj=%@", __func__, __LINE__, self); //输出样式: //2015-01-06 17:13:17.852 justTest[15079:613] // -[ViewController viewDidLoad]:38 obj=<ViewController: 0x109949aa0> 其中func和LINE都是预编译的宏,编译时会分别替换为当前函数和当前行号。下面是一些常用于打印日志的宏。
Q:如何打印一个类名,消息名,当前堆栈信息?A:你可以使用以下方法在运行时动态获取这些信息。
Q:如何将日志打印到一个文件A:可以使用freopen函数重定向标准输出和标准出错文件。因为printf函数会向标准输出(stdout)打印,而NSLog函数会向标准出错(stderr)打印。重新定向标准输出(stdout)和标准出错(stderr)到一个文件将会使他们打印日志到一个文件中。
NSLog(@"%s:%d obj=%@", __func__, __LINE__, obj);[objc] viewplaincopy
![](https://code.csdn.net/assets/CODE_ico.png)
宏 | 说明 |
---|---|
__func__ | 打印当前函数或方法,c字符串 |
__LINE__ | 打印当前行号,整数 |
__FILE__ | 打印当前文件路径,c字符串 |
__PRETTY_FUNCTION__ | 打印当前函数或方法(在C++中会包含参数类型),c字符串 |
代码 | 说明 |
---|---|
NSStringFromSelector(SEL) | 获取selector的名字 |
NSStringFromSelector(_cmd) | 获取当前方法名 |
NSStringFromClass([object class]) | 获取object的类名 |
[NSThread callStackSymbols] | 获取当前线程的栈,是一个NSArry,包含堆栈中所有函数名。 |
freopen("/tmp/log.txt", "a+", stdout); freopen("/tmp/log.txt", "a+", stderr);
相关文章推荐
- iOS开发~终极教程索引
- iOS 获取本地设备相关信息,如:IP地址
- iOS数据持久化---对象归档
- iOS 系统定位的说明与使用
- Post,同步实现登陆验证(2)
- iOS上关于状态栏的设置
- iOS 静态库和动态库.a和framework
- iOS开发 关于终端-4CocoaPods安装和使用(图文并茂版)
- PlistBuddy a good friend to handle iOS plist file
- iOS tabbar 上面更换任意图
- ios 7 statusbar 状态栏 跟随navigationbar的颜色而改变
- iOS开发 汉字转拼音
- iOS中UDP的使用
- iOS支付宝集成遇到的问题
- iOS 获取Wifi的SSID及MAC地址
- ios即时通讯客户端开发之-mac上搭建openfire服务器
- IOS开发之----NSDictionary,JSON和XML互相转换
- iOS8扩展插件Extension的开发
- ios接入facebook及集成plugin-x
- iOS中关于登录验证方面的问题的解决