iOS輕量分組日誌工具 Log4OC

FinderTiwk發表於2018-11-16

OC分級日誌工具,支援4種日誌級別,提供兩種持久化方案

原始碼地址: github.com/FinderTiwk/…

使用

#import "Log4OC.h"

    //DEBUGLog(建議開發除錯使用)
    DEBUGLog(@"這是一個DEBUG級別日誌");
    DEBUGLog(@"FinderTiwk", @"這是一個帶作者的的DEBUG級別日誌");
    
    //INFOLog(建議記錄關鍵資訊使用)
    INFOLog(@"這是一個INFO級別日誌");
    INFOLog(@"FinderTiwk", @"這是一個帶作者的的INFO級別日誌");
    
    //WARNINGLog(建議記錄警告敏資訊使用)
    WARNINGLog(@"這是一個WARNING級別日誌");
    WARNINGLog(@"FinderTiwk", @"這是一個帶作者的的WARNING級別日誌");
    
    //ERRORLog(建議記錄發生異常錯誤時使用)
    ERRORLog(@"這是一個ERROR級別日誌");
    ERRORLog(@"FinderTiwk", @"這是一個帶作者的的ERROR級別日誌");

----------------------Console Print-----------------------
[?DEBUG] 2018-11-14 12:53:45: 這是一個DEBUG級別日誌 
[?DEBUG] 2018-11-14 12:53:45(FinderTiwk): 這是一個帶作者的的DEBUG級別日誌 
[?INFO] 2018-11-14 12:53:45: 這是一個INFO級別日誌 
[?INFO] 2018-11-14 12:53:45(FinderTiwk): 這是一個帶作者的的INFO級別日誌 
[⚠️WARNING] 2018-11-14 12:53:45: 這是一個WARNING級別日誌 
[⚠️WARNING] 2018-11-14 12:53:45(FinderTiwk): 這是一個帶作者的的WARNING級別日誌 
[?ERROR] 2018-11-14 12:53:45: 這是一個ERROR級別日誌 
[?ERROR] 2018-11-14 12:53:45(FinderTiwk): 這是一個帶作者的的ERROR級別日誌 
複製程式碼

偏好設定

0x00 日誌級別

LogLevel DESC
LogLevelDEBUG 預設; 顯示包括(DEBUGLog,INFOLog,WARNINGLog,ERRORLog的Log)
LogLevelINFO 顯示包括(INFOLog,WARNINGLog,ERRORLog的Log)
LogLevelWARNING 顯示包括(WARNINGLog,ERRORLog的Log)*
LogLevelERROR 只顯示ERRORLog的log
LogLevelNONE 關閉所有日誌

#ifdef __OPTIMIZE__
    //當打包時建議去除DEBUG級別的日誌
    setLogLevel(LogLevelINFO);
#endif

//獲取當前日誌級別
LogLevel level = currentLogLevel();

複製程式碼

0x01 日誌模式

  • mode: 日誌模式
    • 0: 只列印到控制檯,DEFAULT
    • 1: 將日誌儲存到Sqlite中
    • 2: 將日誌儲存到本地檔案中
  • clean: 當日志模式不是0時,是否自動清理日誌
    • 0: 不自動清理
    • 大於0: 自動清理當前日期之前的n天的日誌
  • both: 當日志模式不是0時,日誌持久化時是否同時列印到控制檯
    • YES: 同時輸出到控制檯和檔案 (DEBUG時用)
    • NO: 只輸出到檔案
extern void setLogMode(NSUInteger mode,NSUInteger clean, BOOL both);
複製程式碼

0x02 日誌檔案切割

當日志模式為2儲存為本地檔案時,設定日誌檔案大小閥值,K為單位, default 1024K/1M,當單個.log檔案大於這個閥值時,會自動生成新的檔案寫入。

日誌將會儲存在應用沙盒中,名稱例如: 2018_xx_xx-1.log ,2018_xx_xx-2.log

extern void setLogMaxSize(NSUInteger threshold);
複製程式碼

日誌過濾

  1. 按日誌級別過濾
  2. 按寫日誌的作者名稱過濾
  3. 按時間過濾

0x00 控制檯模式下

日誌級別: 可以通過列印出的日誌字首用肉眼觀測,或者在控制檯裡COMMAND+F搜尋關鍵字(DEBUG,INFO,WARNING,ERROR)

作者名稱: 在控制檯裡COMMAND+F搜尋作者名稱

時間: 控制檯日誌輸出按時間順序輸出,自己檢視日誌字首裡的時間戳

0x01 資料庫模式下

資料庫表結構,表名Logger

欄位 資料型別 預設值 描述
level INTEGER 日誌級別
time DATE CURRENT_TIMESTAMP 列印時間
content TEXT 日誌內容
author TEXT 作者,DEAFULT Apple

日誌級別:

SELECT * FROM `Logger` WHERE level = 2
複製程式碼

作者名稱:

SELECT * FROM `Logger` WHERE author = 'FinderTiwk'
複製程式碼

時間:

SELECT * FROM `Logger` WHERE time > '2018-11-13 12:12:12'
複製程式碼

多條件過濾:

SELECT * FROM `Logger` WHERE author = 'FinderTiwk' AND level = 2 AND time > '2018-11-13 12:12:12'
複製程式碼

0x02 本地檔案模式

使用Mac系統自帶的Console開啟2018_xx_xx-1.log檔案,通過關鍵字搜尋

Console
如果圖裂了,請看 user-gold-cdn.xitu.io/2018/11/16/…

相關文章