IOS異常日誌記錄與展現功能

2021-09-08 11:23:41 字數 3839 閱讀 6754

效果圖如下:

1:封裝ddlogger的類

myfilelogger.**件

#import #import @inte***ce myfilelogger : nsobject

@property (nonatomic, strong, readwrite) ddfilelogger *filelogger;

+(myfilelogger *)sharedmanager;

@end

myfilelogger.m檔案

#import "myfilelogger.h"

@implementation myfilelogger

#pragma mark - inititlization

- (instancetype)init

return self; } #pragma mark 單例模式 static myfilelogger *sharedmanager=nil; +(myfilelogger *)sharedmanager ); return sharedmanager; } #pragma mark - 配記日誌型別 - (void)configurelogging #pragma mark - 初始化檔案記錄型別 - (ddfilelogger *)filelogger return _filelogger; } @end

這邊是設定24小時進行記錄乙個檔案

2:出進異常進行記錄

myexceptionhandler.**件

#import #import @inte***ce myexceptionhandler : nsobject

+ (void)setdefaulthandler;

+ (nsuncaughtexceptionhandler *)gethandler;

+ (void)takeexception:(n***ception *) exception; @end

#import "myexceptionhandler.h"

void uncaughtexceptionhandler(n***ception * exception)

@implementation myexceptionhandler + (void)setdefaulthandler + (nsuncaughtexceptionhandler *)gethandler + (void)takeexception:(n***ception *)exception @end

這個檔案也是當出現異常會執行

#import #import #import #import "myexceptionhandler.h"

@end

static const int ddloglevel = log_level_verbose;

//初始化

[myexceptionhandler setdefaulthandler];

這邊重點是設定ddlog的記錄等級ddloglevel,以及上面兩個檔案的初始化[myexceptionhandlersetdefaulthandler];self.logger=[[myfileloggeralloc]init];

實現上面的**已經能夠記錄異常的內容;

4:建立乙個錯誤的異常**

- (void)viewdidload
執行到這段**便記錄異常的內容,接著進行內容的展示,是以乙個列表展示每個日誌檔案,然後乙個詳細頁面進行展示;

5:日誌列表

loggertableviewcontroller.**件

#import "loggerdetailviewcontroller.h"

@inte***ce loggertableviewcontroller : uiviewcontroller

@end

#import "loggertableviewcontroller.h"

#define blsrecyclingrecordviewcontroller_cellidentifier @"mytablecell"

@inte***ce loggertableviewcontroller ()@property (strong, nonatomic) uitableview *mytableview;

@property (nonatomic, strong) nsdateformatter *dateformatter;

@property (nonatomic, weak) ddfilelogger *filelogger;

這邊把**分成兩部分,一部分是日誌檔案的列表,以及乙個清除功能,清除功能主要是對先前的檔案進行刪除的操作,讀取日誌的個數及日誌時間,日誌詳細內容

ddlogfileinfo

6:異常的詳細資訊頁面

loggerdetailviewcontroller.h**

#import @inte***ce loggerdetailviewcontroller : uiviewcontroller

- (id)initwithlog:(nsstring *)logtext fordatestring:(nsstring *)logdate;

@end

loggerdetailviewcontroller.m檔案

#import "loggerdetailviewcontroller.h"

@inte***ce loggerdetailviewcontroller ()

@property (nonatomic, strong) nsstring *logtext;

@property (nonatomic, strong) nsstring *logdate;

@property (nonatomic, strong) uitextview *textview;

@end

@implementation loggerdetailviewcontroller

- (void)viewdidload - (void)didreceivememorywarning - (id)initwithlog:(nsstring *)logtext fordatestring:(nsstring *)logdate return self; } @end

7:如果有第三方其它記錄異常的使用,最好用debug模式本地記錄異常日誌,不然日誌只會被記錄在乙個地方

//

友盟統計載入

[hybumanalyticshelper umanalyticstart];

#ifdef debug

//日誌框架(放在其它sdk下面 myexceptionhandler)

[myexceptionhandler setdefaulthandler];

#else

#endif

[myfilelogger sharedmanager];

這樣便可以實現不管在哪個頁面出出異常都可以進行記錄,因為例項比較小,如果要源**可以留下郵箱統一進行傳送;

日誌記錄功能

給自己的程式,加上記錄日誌的功能。以下是c 可以直接複製使用的。1 using system 2using system.collections.generic 3using system.text 4using system.io 56 namespace pingmock 7 3132 33 判...

異常處理日誌記錄

在我們工作當中無法避免bug,為了能快速解決bug,需要能精準快速的定位問題所在。這就需要我們將每次異常日誌完整的記錄下來,包括傳入的引數,在哪個類的哪個方法哪一行報錯的 在php中常使用gettrace來定位問題所在 function test try catch exception e 輸出 a...

iOS下日誌記錄

ios開發中,一般大家都會自定義乙個dlog的巨集來代替nslog,用來控制release下的log輸出。但是有以下幾個弊端 filelogger.logfilemanager.maximumnumberoflogfiles 20 filelogger.maximumfilesize 1024 10...