iOS开发- 常见日志打印

来源:互联网 发布:解放战争胜利原因知乎 编辑:程序博客网 时间:2024/05/16 06:01

一、打印当前的函数和行号:

我们可以在打印时使用一些预编译宏作为打印参数,来打印当前的函数和行号。如:

NSLog(@"%s:%d obj=%@", __func__, __LINE__, obj);
其中funcLINE都是预编译的宏,编译时会分别替换为当前函数和当前行号。 下面是一些常用于打印日志的宏。

 说明__func__ 打印当前函数或方法,c字符串__LINE__ 打印当前行号,整数__FILE__ 打印当前文件路径,c字符串__PRETTY_FUNCTION__ 打印当前函数或方法(在C++中会包含参数类型),c字符串二、如何打印一个类名,消息名,当前堆栈信息?

你可以使用以下方法在运行时动态获取这些信息。

代码 说明NSStringFromSelector(SEL) 获取selector的名字NSStringFromSelector(_cmd) 获取当前方法名NSStringFromClass([object class]) 获取object的类名[NSThread callStackSymbols] 获取当前线程的栈,是一个NSArry,包含堆栈中所有函数名。

三、如何将日志打印到一个文件?

      可以使用freopen函数重定向标准输出和标准出错文件。因为printf函数会向标准输出(stdout)打印,而NSLog函数会向标准出错(stderr)打印。重新定向标准输出(stdout)和标准出错(stderr)到一个文件将会使他们打印日志到一个文件中。

freopen("/tmp/log.txt", "a+", stdout);freopen("/tmp/log.txt", "a+", stderr);









0 0
原创粉丝点击