博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
用以替换系统NSLog的YouXianMingLog
阅读量:6708 次
发布时间:2019-06-25

本文共 2873 字,大约阅读时间需要 9 分钟。

用以替换系统NSLog的YouXianMingLog

这是本人自己使用并改良的用以替换系统NSLog的类,非常好用,以下是使用示例,现在开源出来并提供源码,好用的话顶一下吧^_^

效果:

YouXianMingLog.h 与 YouXianMingLog.m

////  YouXianMingLog.h////  http://home.cnblogs.com/u/YouXianMing///  https://github.com/YouXianMing////  Created by YouXianMing on 15/1/3.//  Copyright (c) 2015年 YouXianMing. All rights reserved.//#import 
#define ON 1#define OFF 0/// CONFIG /////#define NO_LOG OFF // 禁用Log#define SWITCH_LOG ON // 切换打印#define TIME_STAMP OFF // 时间戳#define FILE_NAME OFF // 文件名////#if SWITCH_LOG#if NO_LOG#define NSLog(args...)#else#define NSLog(args...) ExtendNSLog(__FILE__,__LINE__,__PRETTY_FUNCTION__,args);#endif#endifvoid ExtendNSLog(const char *file, int lineNumber, const char *functionName, NSString *format, ...);
////  YouXianMingLog.m////  http://home.cnblogs.com/u/YouXianMing///  https://github.com/YouXianMing////  Created by YouXianMing on 15/1/3.//  Copyright (c) 2015年 YouXianMing. All rights reserved.//#import "YouXianMingLog.h"#ifndef GCDExecOnce#define GCDExecOnce(block) \{ \static dispatch_once_t predicate = 0; \dispatch_once(&predicate, block); \}#endif#define DMDEBUG_DEFAULT_DATEFORMAT @"HH:mm:ss.SSS"static NSDateFormatter* _DMLogDateFormatter = nil;void ExtendNSLog(const char *file, int lineNumber, const char *functionName, NSString *format, ...){    // 获取时间格式    GCDExecOnce(^{        _DMLogDateFormatter = [[NSDateFormatter alloc] init];        [_DMLogDateFormatter setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"]];        [_DMLogDateFormatter setDateFormat:DMDEBUG_DEFAULT_DATEFORMAT];    });    #if TIME_STAMP    // 获取当前时间戳    const char *nowCString = [[_DMLogDateFormatter stringFromDate:[NSDate date]] cStringUsingEncoding:NSUTF8StringEncoding];        // 处理format    va_list ap;    va_start (ap, format);    if (![format hasSuffix: @"\n"]) {        format = [format stringByAppendingString: @"\n"];    }    NSString *body = [[NSString alloc] initWithFormat:format arguments:ap];    va_end (ap);    #if FILE_NAME    // 获取一些参数    NSString *fileName = [[NSString stringWithUTF8String:file] lastPathComponent];        // 打印    fprintf(stderr, "%s %s:%d %s", nowCString, [fileName UTF8String], lineNumber, [body UTF8String]);#else    fprintf(stderr, "%s %s", nowCString, [body UTF8String]);#endif    #else    // 处理format    va_list ap;    va_start (ap, format);    if (![format hasSuffix: @"\n"]) {        format = [format stringByAppendingString: @"\n"];    }        NSString *body = [[NSString alloc] initWithFormat:format arguments:ap];    va_end (ap);        #if FILE_NAME    // 获取一些参数    NSString *fileName = [[NSString stringWithUTF8String:file] lastPathComponent];        // 打印    fprintf(stderr, "%s:%d %s", [fileName UTF8String], lineNumber, [body UTF8String]);#else     fprintf(stderr, "%s", [body UTF8String]);#endif    #endif}

以下是配置的地方:

 

转载地址:http://qwilo.baihongyu.com/

你可能感兴趣的文章
Mac环境下svn的使用
查看>>
人工智能成功识别“色情暴力”信息????
查看>>
Open edX 学习、开发、运维相关链接整理
查看>>
PHP中$_SERVER的详细参数与说明
查看>>
For input string: "null"
查看>>
基于密度的聚类之Dbscan算法
查看>>
Introduction to Partitioning
查看>>
SQL优化常用方法30
查看>>
Oracle备库无法连接主库的问题分析
查看>>
HDOJ/HDU 2535 Vote(排序、)
查看>>
微信私房菜走红 外卖、用户、监管三方皆受伤
查看>>
lombok系列2:lombok注解详解
查看>>
大数据风控 ——互联网消费金融的必由之路
查看>>
HBase-1.2.4 CombinedBlockCache和InclusiveCombinedBlockCache
查看>>
一个高性能、轻量级的分布式内存队列系统--beanstalk
查看>>
WebRTC学习资料大全
查看>>
C++ auto_ptr智能指针的用法
查看>>
gcc指定头文件路径及动态链接库路径
查看>>
Linux上使用Qt Creator进行C/C++开发
查看>>
自己平常开发常用的jq方法
查看>>