最近一直在做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種級別,我們還可以設定成這樣 將這...