首页 > 代码库 > 用以替换系统NSLog的YouXianMingLog
用以替换系统NSLog的YouXianMingLog
用以替换系统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 <Foundation/Foundation.h>#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}
以下是配置的地方:
用以替换系统NSLog的YouXianMingLog
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。