iOS中打印日志显示系统详细时间,类名,行号及打印值
2015-04-16 10:53
253 查看
Q:如何打印当前的函数和行号?
A:我们可以在打印时使用一些预编译宏作为打印参数,来打印当前的函数和行号。如:
其中__func__和__LINE__都是预编译的宏,编译时会分别替换为当前函数和当前行号。
下面是一些常用于打印日志的宏。
Q:如何打印一个类名,消息名,当前堆栈信息?
A:你可以使用以下方法在运行时动态获取这些信息。
Q:如何将日志打印到一个文件
A:可以使用freopen函数重定向标准输出和标准出错文件。因为printf函数会向标准输出(stdout)打印,而NSLog函数会向标准出错(stderr)打印。重新定向标准输出(stdout)和标准出错(stderr)到一个文件将会使他们打印日志到一个文件中。
#define NSLog(FORMAT, ...) {\
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];\
[dateFormatter setDateStyle:NSDateFormatterMediumStyle];\
[dateFormatter setTimeStyle:NSDateFormatterShortStyle];\
[dateFormatter setDateFormat:@"HH:mm:ss:SSSSSS"]; \
NSString *str = [dateFormatter stringFromDate:[NSDate date]];\
[dateFormatter release];\
fprintf(stderr,"[--%s--]*[--%s--]*[--%s:%d--]\n",[str UTF8String], [[NSString stringWithFormat:FORMAT, ##__VA_ARGS__] UTF8String],[[[NSString stringWithUTF8String:__FILE__] lastPathComponent] UTF8String],
__LINE__);\
}
点击原文链接
A:我们可以在打印时使用一些预编译宏作为打印参数,来打印当前的函数和行号。如:
1 | NSLog(@"%s:%d obj=%@", __func__, __LINE__, obj); |
下面是一些常用于打印日志的宏。
宏 | 说明 |
__func__ | 打印当前函数或方法,c字符串 |
__LINE__ | 打印当前行号,整数 |
__FILE__ | 打印当前文件路径,c字符串 |
__PRETTY_FUNCTION__ | 打印当前函数或方法(在C++中会包含参数类型),c字符串 |
A:你可以使用以下方法在运行时动态获取这些信息。
代码 | 说明 |
NSStringFromSelector(SEL) | 获取selector的名字 |
NSStringFromSelector(_cmd) | 获取当前方法名 |
NSStringFromClass([object class]) | 获取object的类名 |
NSThread callStackSymbols] | 获取当前线程的栈,是一个NSArry,包含堆栈中所有函数名。 |
A:可以使用freopen函数重定向标准输出和标准出错文件。因为printf函数会向标准输出(stdout)打印,而NSLog函数会向标准出错(stderr)打印。重新定向标准输出(stdout)和标准出错(stderr)到一个文件将会使他们打印日志到一个文件中。
1 2 | freopen("/tmp/log.txt", "a+", stdout); freopen("/tmp/log.txt", "a+", stderr); |
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];\
[dateFormatter setDateStyle:NSDateFormatterMediumStyle];\
[dateFormatter setTimeStyle:NSDateFormatterShortStyle];\
[dateFormatter setDateFormat:@"HH:mm:ss:SSSSSS"]; \
NSString *str = [dateFormatter stringFromDate:[NSDate date]];\
[dateFormatter release];\
fprintf(stderr,"[--%s--]*[--%s--]*[--%s:%d--]\n",[str UTF8String], [[NSString stringWithFormat:FORMAT, ##__VA_ARGS__] UTF8String],[[[NSString stringWithUTF8String:__FILE__] lastPathComponent] UTF8String],
__LINE__);\
}
点击原文链接
相关文章推荐
- iOS中打印日志显示系统详细时间,类名,行号及打印值
- iOS中打印日志显示系统详细时间,类名,行号及打印值
- iOS中打印日志显示系统详细时间,类名,行号,函数名,线程,及打印值
- iOS中打印日志显示系统详细时间,类名,行号及打印值
- iOS中打印日志显示系统详细时间,类名,行号及打印值
- iOS 打印日志显示系统详细时间,类名,行号及打印值
- iOS中打印日志显示系统详细时间,类名,行号及打印值
- iOS中打印日志显示系统详细时间,类名,行号及打印值
- Android 日志打印工具类 可显示打印所在的方法和行号
- iOS状态栏获取网络类型,运营商,电池电量,显示的系统时间等信息
- ios系统 微信时间显示NANANANA
- iOS系统通知,与自定义显示时间
- Android 日志打印工具类 可显示打印所在的方法和行号
- iOS状态栏获取网络类型,运营商,电池电量,显示的系统时间等信息
- iOS开发学习专题-基础知识(五) NSDate时间 NSUserDefaults本地存储 NSNotification系统通知的详细使用方式
- 显示日期和时间,列出所有登录的用户,给出系统的更新时间,最后将所有信息保存到日志文件中
- ios打印日志的类,方法,及行号
- 在系统启动时至少有一个服务或驱动程序产生错误。详细信息,请使用时间查看器查看事件日志
- iOS日志记录当前文件的堆栈、类名、函数名、行号及文件路径等信息
- ios-调试程序打印详细信息 文件名 函数名 行号