FGLogger
在App開發(fā)中窍霞,本地日志對于測試分成重要沦补,所以一個分模塊的本地日志系統(tǒng)非常重要罩缴。
FGLogger 在根據(jù)模塊枚舉來區(qū)分模塊踢俄,將不同模塊的日志寫入不同文件中缩功,且一次啟動活動的日志將被放入以啟動時間命名的文件夾中,方便查找都办。應(yīng)用結(jié)果如下:WechatIMG2.jpeg
WechatIMG3.jpeg
結(jié)構(gòu)
├── FGLog.h //宏定義入口嫡锌,使用FGLog(module,level,format,...)代替NSLog
├── FGLog.m
├── Application //查看日志文件夾
│ ├── FGFileContext.h
│ ├── FGFileContext.m
│ ├── FGPrintFolderViewController.h
│ ├── FGPrintFolderViewController.m
│ ├── FGPrintLogViewController.h
│ └── FGPrintLogViewController.m
└── Logger //日志寫入模塊
├── FGLoggerComponent.h // 本地日志目錄配置
├── FGLoggerComponent.m
├── FGLogger.h // 本地日志寫入基類,維護(hù)異步寫入琳钉,日志文件循環(huán)覆蓋势木,文件夾管理等
├── FGLogger.m
├── FGSingleRunLogger.h //一次啟動活動創(chuàng)建一個特定文件夾
├── FGSingleRunLogger.m
├── FGTTYLogger.h //在一個文件夾中分模塊寫入日志
└── FGTTYLogger.m
FGLog
//定義的模塊名,僅僅用來生成日志文件名歌懒,可隨意定制
typedef NS_ENUM(NSInteger, FGLogModuleSign) {
FGLog_UnclearModule,
FGLog_Home,
};
// 日志輸出等級
typedef NS_ENUM(NSInteger, FGLogLevel) {
FGLogLevel_UnKnow = 0,
FGLogLevel_Warning,
FGLogLevel_MustShow,
FGLogLevel_WriteToFile = FGLogLevel_MustShow, //寫入文件中
};
//日志輸出宏定義
#define FGLog(module,level,format,...) {[FGLogPrinter FGLogLevel:level Module:module ModuleStr:#module Function:__FUNCTION__ Thread:[NSThread currentThread] Line:__LINE__ Format:format Info:[NSString stringWithFormat:format,##__VA_ARGS__]];}
@interface FGLogPrinter : NSObject
+ (void)FGLogLevel:(NSInteger)level
Module:(NSInteger)module
ModuleStr:(const char* const)moduleStr
Function:(const char* const)function
Thread:(NSThread*)currentThread
Line:(int)line
Format:(NSString*)format
Info:(NSString*)info;
@end
可根據(jù)需要重新定義自己的宏定義和日志輸出級別啦桌。
應(yīng)用方式
#import "ViewController.h"
#import "FGLog.h"
#import "FGPrintLogViewController.h"
//自定義模塊,哪怕FGLog_TestModule與FGLog_Home值都為0也毫不影響。
typedef NS_ENUM(NSInteger, NewModuleSign) {
FGLog_TestModule,
FGLog_TestModule2,
};
@interface ViewController ()
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view.
self.title = @"主頁";
//調(diào)用輸出日志
FGLog(FGLog_Home, FGLogLevel_MustShow, @"已進(jìn)入主頁");
FGLog(FGLog_TestModule, FGLogLevel_MustShow, @"新Module");
FGLog(FGLog_TestModule2, FGLogLevel_MustShow, @"新Module2");
{
UIButton *btn = [[UIButton alloc]initWithFrame:CGRectMake(50, 100, 200, 44)];
[btn setTitle:@"查看日志" forState:UIControlStateNormal];
btn.backgroundColor = [UIColor blueColor];
[btn addTarget:self action:@selector(pushToNextVC) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:btn];
}
}
- (void)pushToNextVC{
FGPrintLogViewController *vc = [[FGPrintLogViewController alloc]init];
vc.view.backgroundColor = [UIColor whiteColor];
[self.navigationController pushViewController:vc animated:YES];
}
@end
使用上述代碼甫男,即可生成對應(yīng)模塊日志且改。
注:自定義模塊,哪怕FGLog_TestModule與FGLog_Home值都為0也毫不影響板驳。
Demo及Pod導(dǎo)入
Demo地址:https://github.com/FlameGrace/FGLogger
pod 'FGLogger'