CocoaLumberjack增强异步日志组件BITCocoaLumberjack的使用

简介: CocoaLumberjack增强异步日志组件BITCocoaLumberjack的使用

使用我自己做的异步日志公有库: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级别的日志不写入日志文件。

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
7月前
|
存储 缓存 前端开发
muduo高性能异步日志库的实现
muduo高性能异步日志库的实现
190 0
|
1月前
|
前端开发
muduo源码剖析之AsyncLogging异步日志类
AsyncLogging是muduo的日志,程序如果直接让文件写日志可能会发生阻塞,muduo前端设计了2个BufferPtr,分别是currentBuffer_和nextBuffer_,还有一个存放BufferPtr的vector(buffers_)。多个前端线程往currentBuffer_写数据,currentBuffer_写满了将其放入buffers_,通知后端线程读。前端线程将currentBuffer_和nextBuffer_替换继续写currentBuffer_。
32 0
|
1月前
|
存储 消息中间件 Java
Java多线程实战-异步操作日志记录解决方案(AOP+注解+多线程)
Java多线程实战-异步操作日志记录解决方案(AOP+注解+多线程)
|
7月前
|
存储 缓存 前端开发
两种异步日志方案的介绍
两种异步日志方案的介绍
111 0
|
1月前
|
Java
使用logback异步打印日志
使用logback异步打印日志
使用logback异步打印日志
|
1月前
|
消息中间件 设计模式 Java
spdlog中的异步日志方案
spdlog中的异步日志方案
324 2
|
1月前
|
NoSQL Go Redis
Golang实现redis系列-(1)日志组件的封装
Golang实现redis系列-(1)日志组件的封装
46 0
|
1月前
|
Java Linux
异步日志方案log4cpp
异步日志方案log4cpp
137 0
|
1月前
|
缓存 前端开发 NoSQL
muduo异步日志库模块的实现
muduo异步日志库模块的实现
|
6月前
|
存储 JSON API
微服务框架 go-zero logx 日志组件剖析
微服务框架 go-zero logx 日志组件剖析
119 0