CocoaLumberjack接入實踐 2022-05-07 周六

簡介

對于日志,NSLog大多數情況下是夠用的。
不過,如果想要留存本地日志文件,那么就可以考慮使用CocoaLumberjack

集成

使用CocoaPods,很方便
pod 'CocoaLumberjack'

使用

問題1: ddLogLevel的定義

很多網絡文章介紹如下定義方式:

#ifdef DEBUG
  static const int ddLogLevel = LOG_LEVEL_VERBOSE;
#else
  static const int ddLogLevel = LOG_LEVEL_WARN;
#endif

只是現在改了,LOG_LEVEL_VERBOSE會編譯不過,需要修改為如下方式:

// 日志級別定義
#ifdef DEBUG
    static const DDLogLevel ddLogLevel = DDLogLevelVerbose;
#else
    static const DDLogLevel ddLogLevel = DDLogLevelError;
#endif

問題2:DDASLLogger,DDTTYLogger已經廢棄

很多網絡文章會提供如下使用方式:

[DDLog addLogger:[DDASLLogger sharedInstance]];
[DDLog addLogger:[DDTTYLogger sharedInstance]];
[[DDTTYLogger sharedInstance] setColorsEnabled:YES];

現在已經改了,只要用以下一句就可以了:

[DDLog addLogger:[DDOSLogger sharedInstance]]; // Uses os_log

至于顏色插件之類的,沒有必要。

封裝

直接在pch文件和APPDelegate中添加,當然是沒問題的。只是這些地方會加很多其他的東西,所以加了一層封裝:

  • 頭文件
//
//  PDALog.h
//  PandaPhoto
//
//  Created by zxs on 2022/5/7.
//

#import <Foundation/Foundation.h>
#import <CocoaLumberjack/CocoaLumberjack.h>

// 日志級別定義
#ifdef DEBUG
    static const DDLogLevel ddLogLevel = DDLogLevelVerbose;
#else
    static const DDLogLevel ddLogLevel = DDLogLevelError;
#endif

// 宏定義,改個名字
#define PDALogError         DDLogError
#define PDALogWarn          DDLogWarn
#define PDALogInfo          DDLogInfo
#define PDALogDebug         DDLogDebug
#define PDALogVerbose       DDLogVerbose

NS_ASSUME_NONNULL_BEGIN

@interface PDALog : NSObject

// 創建日志對象
+ (void)setup;

@end

NS_ASSUME_NONNULL_END
  • 執行文件
//
//  PDALog.m
//  PandaPhoto
//
//  Created by zxs on 2022/5/7.
//

#import "PDALog.h"

@implementation PDALog

// 創建日志對象
+ (void)setup {
    [DDLog addLogger:[DDOSLogger sharedInstance]]; // Uses os_log

    DDFileLogger *fileLogger = [[DDFileLogger alloc] init]; // File Logger
    fileLogger.rollingFrequency = 60 * 60 * 24; // 24 hour rolling
    fileLogger.logFileManager.maximumNumberOfLogFiles = 7;
    [DDLog addLogger:fileLogger];
}

@end
  • 這樣的話,具體的調用場所就可以用一句話了,簡潔一點。

  • 使用的話,DDLogXXX和PDALogXXX是等價的。用上自己工程的前綴,而不是固定的DD,感覺上順眼一點罷了。

一句話調用

  • pch文件中
// 日志
#import "PDALog.h"
  • AppDelegate中
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    // Override point for customization after application launch.
   
    // 日志
    [PDALog setup];
    
    return YES;
}
  • 這兩個地方都是公共場合,經過封裝之后,看上去簡潔一點。

  • 使用的例子:

PDALogError(@"翻譯接口返回內容JSON解析失敗");
DDLogError(@"翻譯接口返回內容JSON解析失敗");
NSLog(@"翻譯接口返回內容JSON解析失敗");

看上去使用方式一模一樣。
只是Error級別的盡量控制一下,release版本也會有的。其他低級別的隨便寫,release版本不會有。

參考文章

使用CocoaLumberjack的一些問題記錄

CocoaLumberjack

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容