zoukankan      html  css  js  c++  java
  • iPhone开发技巧之日志保存教程

    http://mobile.51cto.com/iphone-283337.htm

    Objective-C开发程序的时候,有专门的日志操作类NSLog,它将指定的输出到标准的错误输出上(stderr)。我们可以利用它在Xcode的日志输出窗口,或者是输出到具体的文件当中。

    AD:2014WOT全球软件技术峰会北京站 课程视频发布

    iPhone开发技巧之日志保存教程是本文要介绍的内容,大部分人调试程序都是看日志吧,这里我就给大家总结一下iphone程序中添加保存日志的方法。

    Objective-C开发程序的时候,有专门的日志操作类NSLog,它将指定的输出到标准的错误输出上(stderr)。我们可以利用它在Xcode的日志输出窗口,或者是输出到具体的文件当中。

    下面是我在程序中常用到的日志宏,用DEBUG开关管理,也就是说只有在DEBUG模式下才让日志输出 :

    1. #ifdef DEBUG  
    2. #  define LOG(fmt, ...) do {                                              
    3.         NSString* file = [[NSString alloc] initWithFormat:@"%s", __FILE__];   
    4.         NSLog((@"%@(%d) " fmt), [file lastPathComponent], __LINE__, ##__VA_ARGS__);   
    5.         [file release];                                                   
    6.     } while(0)  
    7. #  define LOG_METHOD NSLog(@"%s", __func__)  
    8. #  define LOG_CMETHOD NSLog(@"%@/%@", NSStringFromClass([self class]), NSStringFromSelector(_cmd))  
    9. #  define COUNT(p) NSLog(@"%s(%d): count = %d ", __func__, __LINE__, [p retainCount]);  
    10. #  define LOG_TRACE(x) do {printf x; putchar(' '); fflush(stdout);} while (0)  
    11. #else  
    12. #  define LOG(...)  
    13. #  define LOG_METHOD  
    14. #  define LOG_CMETHOD  
    15. #  define COUNT(p)  
    16. #  define LOG_TRACE(x)  
    17. #endif 

    可以看到,除了标准的用户定义输出外,我还加入了许多有用的信息,比如源程序文件位置,行号,类名,函数名等。具体的应用可以在具体的开发过程中添加、删除。

    真机测试的时候,可以利用freopen将标准错误输出保存到指定的文件当中,这样就可以在问题发生后分析日志文件。

    1. - (void)redirectNSLogToDocumentFolder{  
    2.     NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES);  
    3.     NSString *documentsDirectory = [paths objectAtIndex:0];  
    4.     NSString *fileName =[NSString stringWithFormat:@"%@.log",[NSDate date]];  
    5.     NSString *logFilePath = [documentsDirectory stringByAppendingPathComponent:fileName];  
    6.     freopen([logFilePath cStringUsingEncoding:NSASCIIStringEncoding],"a+",stderr);  
    7. }  
    8.  
    9. - (void)applicationDidFinishLaunching:(UIApplication *)application {  
    10.     // 真机测试时保存日志  
    11.     if ([CDeviceInfo getModelType] != SIMULATOR) {  
    12.         [self redirectNSLogToDocumentFolder];  
    13.     }  
    14.     .....  

    小结:iPhone开发技巧之日志保存教程的内容介绍完了,希望通过本文的学习能对你有所帮助!

  • 相关阅读:
    [Objective-C语言教程]决策结构(10)
    [Objective-C语言教程]循环语句(9)
    [Objective-C语言教程]关系运算符(8)
    [Objective-C语言教程]常量(7)
    [Objective-C语言教程]变量(6)
    [Objective-C语言教程]数据类型(5)
    转 Apache Ant 实现自动化部署
    转 智能化运维最佳实践-自动化
    ANT 操控 ORACLE数据库实践
    转: Ant 脚本的结构化设计
  • 原文地址:https://www.cnblogs.com/yangmx/p/4045298.html
Copyright © 2011-2022 走看看