使用我自己做的异步日志公有库:BITCocoaLumberjack; BITCocoaLumberjack基于CocoaLumberjack 3.4.2版本进行增强,打印文件名,函数名,日志所在文件的行数;测试加入GCD的MainDispatchQueue队列线程在后台仍旧可以运行。
BITCocoaLumberjack的使用demo。
1.增加文件:PrefixHeader.h。
2.增加Podfile文件
source 'https://github.com/CocoaPods/Specs.git' platform :ios, '8.0' use_frameworks! inhibit_all_warnings! target 'UseBITCocoaLumberjack' do #自定义组件 pod 'BITCocoaLumberjack' end
3.打开终端命令行,切换到Podfile文件所在目录下执行:pod update --verbose --no-repo-update
下载BITCocoaLumberjack组件。
4.在PrefixHeader.h文件中增加如下代码:
#ifndef PrefixHeader_h #define PrefixHeader_h #import <Foundation/Foundation.h> #import <UIKit/UIKit.h> //异步日志处理和测试环境,现网环境切换宏 #ifndef TEST_XCODE_COLORS //当发布正式服务器时需要置为0,就能关闭日志系统 #define TEST_XCODE_COLORS 1 #else #endif #if TEST_XCODE_COLORS #import <BITCocoaLumberjack/CocoaLumberjack.h> #import <BITCocoaLumberjack/CocoaLumberjackMacro.h> static const int ddLogLevel = DDLogLevelVerbose; #define NSLog(...) NSLog(__VA_ARGS__) #else #import <BITCocoaLumberjack/CocoaLumberjackNoLogsMacro.h> #define NSLog(...) #endif #endif /* PrefixHeader_h */
5.在AppDelegate.m文件修改增加如下代码:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { // Override point for customization after application launch. [self configDDLog]; return YES; } - (void)configDDLog { #if TEST_XCODE_COLORS [DDLog addLogger:[DDTTYLogger sharedInstance]]; [DDLog addLogger:[DDASLLogger sharedInstance]]; [[DDTTYLogger sharedInstance] setColorsEnabled:YES]; DDFileLogger *fileLogger = [[DDFileLogger alloc] init]; fileLogger.rollingFrequency = 60 * 60 * 24 * 3; // 24 hour rolling fileLogger.logFileManager.maximumNumberOfLogFiles = 100; fileLogger.logFileManager.logFilesDiskQuota = 10 * 1024 * 1024;//20 * 1024 * 1024; // 20 MB [DDLog addLogger:fileLogger]; #if TARGET_OS_IPHONE UIColor *pink = [UIColor colorWithRed:(255/255.0) green:(58/255.0) blue:(159/255.0) alpha:1.0]; #else NSColor *pink = [NSColor colorWithCalibratedRed:(255/255.0) green:(58/255.0) blue:(159/255.0) alpha:1.0]; #endif [[DDTTYLogger sharedInstance] setForegroundColor:pink backgroundColor:nil forFlag:DDLogFlagInfo]; #if TARGET_OS_IPHONE UIColor *gray = [UIColor grayColor]; #else NSColor *gray = [NSColor grayColor]; #endif //注意:新版本的CocoaLumberjack的下面日志级别要设置为DDLogFlagVerbose,若设置为DDLogFlagInfo,那么DDLogFlagVerbose级别的日志不写入日志文件 [[DDTTYLogger sharedInstance] setForegroundColor:pink backgroundColor:nil forFlag:DDLogFlagVerbose]; FLDDLogError(@"TEST DDLogError"); FLDDLogWarn(@"TEST DDLogWarn"); FLDDLogInfo(@"TEST DDLogInfo)"); FLDDLogDebug(@"TEST DDLogDebug"); FLDDLogVerbose(@"TEST DDLogVerbose"); #endif }
6.在其它页面你想打印的日志地方打印日志,示例如下:
- (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. [self test]; } //测试加入GCD的MainDispatchQueue队列里的线程在后台仍旧可以运行三分钟 -(void)test { FLDDLogDebug(@"测试加入GCD的MainDispatchQueue队列线程在后台仍旧可以运行"); dispatch_async(dispatch_get_main_queue(), ^{ for(NSInteger i = 0; ; i++) { sleep(1); FLDDLogDebug(@"test:%ld", (long)i); } }); }
7.在Info.plist增加一行Application supports iTunes file sharing为YES。
当然测试版本设置为YES,正式版本把它设置为NO,关闭日志功能。当然你可以继续打印日志,只是提高它的打印级别。可以上传日志到苹果日志系统。
DDLog(整个框架的基础) DDASLLogger(发送日志语句到苹果的日志系统,以便它们显示在Console.app上) DDTTYLoyger(发送日志语句到Xcode控制台,如果可用) DDFIleLoger(把日志语句发送至文件) //使用如下: [DDLog addLogger:[DDASLLogger sharedInstance]]; [DDLog addLogger:[DDASLLogger sharedInstance]]; [DDLog addLogger:[DDTTYLogger sharedInstance]]; 或[[DDTTYLogger sharedInstance] setColorsEnabled:YES];
注意:新版本的CocoaLumberjack的下面日志级别要设置为DDLogFlagVerbose,若设置为DDLogFlagInfo,那么DDLogFlagVerbose级别的日志不写入日志文件。