向牛人致敬:http://mobile.tutsplus.com/tutorials/iphone/customize-nslog-for-easier-debugging/
问题
NSLog输出的信息很少,格式如下
Date Time OurApp[<processid>] NSLog output
数据可能像这样
20131111 12:35:35.025 TestApp[460:c07] Hello world
我们希望输出更多的内容,比如文件名,方法名,代码行数等,简单来说就像下面这种格式
(ClassName MethodName) (SourceFileName:LineNumber NSLog output
解决方法
步骤
-
新建一个类,命名为ExtendNSLogFunctionality;
-
打开ExtendNSLogFunctionality.h,加入下面代码
#ifdef DEBUG #define NSLog(args...) ExtendNSLog(__FILE__,__LINE__,__PRETTY_FUNCTION__,args); #else #define NSLog(x...) #endif void ExtendNSLog(const char *file, int lineNumber, const char *functionName, NSString *format, ...);
-
打开ExtendNSLogFunctionality.m , 加入下面代码
void ExtendNSLog(const char *file, int lineNumber, const char *functionName, NSString *format, ...) { // Type to hold information about variable arguments. va_list ap; // Initialize a variable argument list. va_start (ap, format); // NSLog only adds a newline to the end of the NSLog format if // one is not already there. // Here we are utilizing this feature of NSLog() if (![format hasSuffix: @"\n"]) { format = [format stringByAppendingString: @"\n"]; } NSString *body = [[NSString alloc] initWithFormat:format arguments:ap]; // End using variable argument list. va_end (ap); NSString *fileName = [[NSString stringWithUTF8String:file] lastPathComponent]; fprintf(stderr, "(%s) (%s:%d) %s", functionName, [fileName UTF8String], lineNumber, [body UTF8String]); }
-
把ExtendNSLogFunctionality.h 加入到Prefix.pch 的__OBJC__section中
#ifdef __OBJC__ #import <UIKit/UIKit.h> #import <Foundation/Foundation.h> #import "ExtendNSLogFunctionality.h" #endif
##测试结果 在某个文件的某个方法中NSLog了一下,结果如下
(-[TestNSLogVC resetSize]) (TestNSLogVC.m:78) height : 460.000000 width:320.000000
至于什么文件 什么方法嘛,看了输出你就知道了 O(∩_∩)O~