iOS專案之使用開關控制日誌輸出的功能

2022-09-06 20:30:18 字數 1813 閱讀 2997

最近一直在做sdk的專案,使用者提出了乙個需求,需要遮蔽sdk內部的日誌輸出。由於sdk內部的日誌是為了除錯,如果遮蔽了肯定不方便,所以研究了一下日誌輸出開關的功能。

在這裡介紹兩種實現方案:一種方案是使用nsuserdefaults,一種方案是使用自定義類來控制。

第一種方案:nsuserdefaults

這種方案比較簡單,主要使用nsuserdefaults來儲存日誌輸出的狀態。直接上**:

//

日誌狀態獲取

[[[nsuserdefaults standarduserdefaults] valueforkey:@"

klogenable

"] boolvalue]; //

日誌狀態修改

nsuserdefaults *userd =[nsuserdefaults standarduserdefaults];

[userd setvalue:@(s.ison) forkey:

@"klogenable"];

[userd synchronize];

然後在.pc**件中新增巨集來進行判斷輸出日誌功能:

#define customlogenable   [[[nsuserdefaults standarduserdefaults] valueforkey:@"klogenable"] boolvalue]

#define firstmethodlog(format,...) if(customlogenable)

else {}

這樣在其他地方使用firstmethodlog方法來輸出日誌,就可以實現控制日誌輸出的功能。

第二種方案:自定義日誌輸出管理類customlogmanager

首先在.**件中提供幾個方法:

//

設定日誌輸出狀態

+ (void

)setlogenable:(bool)enable;

//獲取日誌輸出狀態

+(bool)getlogenable;

//日誌輸出方法

+ (void)customlogwithfunction:(const

char *)function linenumber:(int)linenumber formatstring:(nsstring *)formatstring;

然後在.m檔案中,設定靜態變數來儲存日誌輸出狀態值

//

預設值為no

static bool klogenable = no;

類方法的實現:

+ (void

)setlogenable:(bool)enable

+(bool)getlogenable

+ (void)customlogwithfunction:(const

char *)function linenumber:(int)linenumber formatstring:(nsstring *)formatstring

}

最後新增巨集定義

#define secondmethodlog(format,...)  [cutomlogmanager customlogwithfunction:__function__ linenumber:__line__ formatstring:[nsstring stringwithformat:format, ##__va_args__]]

這樣在其他地方使用secondmethodlog方法來輸出日誌,就可以控制日誌輸出了。

在這裡附上demo:customlogdemo

ios基礎控制項之開關按鈕(UISwitch)

uiswitch控制項是ios開發的基礎控制項,是非常簡單的乙個控制項,因為它的方法比較少。uiswitch繼承於uicontrol基類,因此可以當成活動控制項使用。注意 開關狀態通過它的on屬性進行讀取,該屬性是乙個bool屬性 建立 uiswitch myswitch uiswitch allo...

ios基礎控制項之開關按鈕(UISwitch)

uiswitch控制項是ios開發的基礎控制項,是非常簡單的乙個控制項,因為它的方法比較少。uiswitch繼承於uicontrol基類,因此可以當成活動控制項使用。注意 開關狀態通過它的on屬性進行讀取,該屬性是乙個bool屬性 建立 uiswitch myswitch uiswitch allo...

Java中log4j控制寫入日誌開關

現在我們在程式中寫日誌輸出 引入import org.apache.log4j.logger 接下來,關鍵的了。配置log4j.properties檔案,如下 現在我們就可以將日誌輸出到d盤的test.log檔案裡了。但是,要關閉日誌寫入,應該怎麼辦啊?除了上面的5種級別,我們還可以設定成這樣 將這...