zoukankan      html  css  js  c++  java
  • 自定义的打印语句NSLog在控制台输出不完整的完美解决

    之前定义日志输出时用的下面的方法

    1 #ifdef DEBUG // 调试状态, 打开LOG功能
    2 #define CXTLog(...) NSLog(__VA_ARGS__)
    3 #else // 发布状态, 关闭LOG功能
    4 #define CXTLog(...)
    5 #endif
    

    感觉很完美,但是最近升级xcode 9以后发现控制台总是输出不完整,打印接口数据总是打印出一部分,很是郁闷,

    直到发现了下面的方法:

    1 #ifdef DEBUG // 调试状态, 打开LOG功能
    2 
    3 #define CXTLog( s, ... ) printf("class: <%p %s:(%d) > method: %s 
    %s
    ", self, [[[NSString stringWithUTF8String:__FILE__] lastPathComponent] UTF8String], __LINE__, __PRETTY_FUNCTION__, [[NSString stringWithFormat:(s), ##__VA_ARGS__] UTF8String] )
    4 
    5 #else// 发布状态, 关闭LOG功能
    6 #define CXTLog( s, ... )
    7 #endif
    

    用这个方法解决了控制台输出不完整的问题,整个人就好了!

    升级版:

    #ifdef DEBUG
    
    #define LYLog(FORMAT, ...) {
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
    [dateFormatter setDateStyle:NSDateFormatterMediumStyle];
    [dateFormatter setTimeStyle:NSDateFormatterShortStyle];
    NSTimeZone* timeZone = [NSTimeZone timeZoneWithName:@"Asia/Beijing"];
    [dateFormatter setTimeZone:timeZone];
    [dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss.SSSSSSZ"];
    NSString *str = [dateFormatter stringFromDate:[NSDate date]];
    fprintf(stderr,"TIME:%s【FILE:%s--LINE:%d】FUNCTION:%s
    %s
    ",[str UTF8String],[[[NSString stringWithUTF8String:__FILE__] lastPathComponent] UTF8String], __LINE__,__PRETTY_FUNCTION__,[[NSString stringWithFormat:FORMAT, ##__VA_ARGS__] UTF8String]);
    }
    
    #else
     # define LYLog(...);
    #endif
    
  • 相关阅读:
    创建类以及引用一个类
    修改hosts文件
    微信第三方登录接口开发
    Android定位
    Leetcode 102. Binary Tree Level Order Traversal
    Leetcode 725. Split Linked List in Parts
    Leetcode 445. Add Two Numbers II
    Leetcode 328. Odd Even Linked List
    Leetcode 237. Delete Node in a Linked List
    Leetcode 234. Palindrome Linked List
  • 原文地址:https://www.cnblogs.com/Rong-Shengcom/p/7851060.html
Copyright © 2011-2022 走看看