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

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 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日志并进行多维度分析。
目录
相关文章
|
1月前
|
缓存 Linux 编译器
【C++】CentOS环境搭建-安装log4cplus日志组件包及报错解决方案
通过上述步骤,您应该能够在CentOS环境中成功安装并使用log4cplus日志组件。面对任何安装或使用过程中出现的问题,仔细检查错误信息,对照提供的解决方案进行调整,通常都能找到合适的解决之道。log4cplus的强大功能将为您的项目提供灵活、高效的日志管理方案,助力软件开发与维护。
54 0
|
3月前
|
XML 监控 Java
异步日志:性能优化的金钥匙
本文主要介绍了Log4j2框架的核心原理、实践应用以及一些实用的小Tips,力图揭示Log4j2这一强大日志记录工具在现代分布式服务架构运维中的关键作用。
|
3月前
|
消息中间件 监控 搜索推荐
OpenFeign日志组件Logger原理与应用
该文章详细解释了如何在OpenFeign中配置并使用请求和响应的GZIP压缩功能。
|
3月前
|
Java 编译器 数据库
异步日志方案——spdlog
异步日志方案——spdlog
|
3月前
|
SQL JavaScript 前端开发
【Azure 应用服务】Azure JS Function 异步方法中执行SQL查询后,Callback函数中日志无法输出问题
【Azure 应用服务】Azure JS Function 异步方法中执行SQL查询后,Callback函数中日志无法输出问题
|
3月前
|
Kubernetes API Docker
在K8S中,如何查看kubelet组件的日志?
在K8S中,如何查看kubelet组件的日志?
|
4月前
|
Java 测试技术
深入理解Logback异步日志配置及性能优化
深入理解Logback异步日志配置及性能优化
330 2
|
4月前
|
存储 弹性计算 运维
可观测性体系问题之Process Layer在ECS稳定性平台中的工作如何解决
可观测性体系问题之Process Layer在ECS稳定性平台中的工作如何解决
42 0
|
5月前
|
开发框架 安全 Java
信息打点-语言框架&开发组件&FastJson&Shiro&Log4j&SpringBoot等
信息打点-语言框架&开发组件&FastJson&Shiro&Log4j&SpringBoot等
|
6月前
|
存储 消息中间件 Java
Java多线程实战-异步操作日志记录解决方案(AOP+注解+多线程)
Java多线程实战-异步操作日志记录解决方案(AOP+注解+多线程)