C 類靜態例項日誌方法

2022-08-25 16:24:25 字數 4839 閱讀 5069

關鍵字:日誌操作、類靜態例項

今日主旋律是bug。  先是udp的非同步接收bug。再是乙個每當日期變更nmonitorsystem程式崩潰的bug。不過還好.net的異常系統事件可以捕捉到即使沒有**也可以定位到錯誤源。順便說一句很多時候.net異常很難確定,即使進入除錯沒原始碼看到的也只是彙編**很難定位異常。這時候才發現debug程式的意義。

這個異常出現很奇葩,1是因為這個庫用了4年了再很多專案中用到,甚至之前的銀行程式。2出現的條件是剛好在日期變化是需要日誌記錄捕捉的程式異常。3log普通的異常沒有呼叫到之前。

logger類**(修改日期變更bug)

1

using

system;

2using

system.io;

3using

system.configuration;45

namespace

ks.global640

41public

void close() //

關閉日誌,釋放資源

4247

catch

(exception e)

4851}52

private

const

int debug = 0;53

private

const

int warning = 1;54

private

const

int error = 2;55

private

const

int info = 3;56

/**57* 記錄日誌級別

58* 0 debug

59* 1 warning

60* 2 error

61* 3 info

62* 如果需要更改記錄日誌的級別,只需要修改本字段的取值即可63*

*/64

private

int level = 0;65

/**66* 獲取日誌類例項67*

*/68

public

static

logger getlogger()

6978

//else

79//

8283 logger.recordlog = true

;84 logger.datetime = datetime.now.tostring("

u").substring(0, 10

);85

string sdir =utiltool.getexecutepath();

86 logger.config(sdir + "

log\\

" + logger.datetime + "

.log");

87}88return

logger;89}

90///

91///

日誌分型別,分別new不同型別物件

92///

93///

94///

95public

static logger getlogger(string

logtype)

96113 controllogger.config(path + "

\\" + controllogger.datetime + "

.log");

114}

115return

controllogger;

116}

117case

"step":

118130 steplogger.config(path + "

\\" + steplogger.datetime + "

.log");

131}

132return

steplogger;

133}

134135

case

"script":

136148 scriptlogger.config(path + "

\\" + scriptlogger.datetime + "

.log");

149}

150return

scriptlogger;

151}

152case

"code":

153165 codelogger.config(path + "

\\" + codelogger.datetime + "

.log");

166}

167return

codelogger;

168}

169case"db

":170183 datalogger.config(path + "

\\" + datalogger.datetime + "

.log");

184}

185return

datalogger;

186}

187case

"monitor":

188200 monitorlogger.config(path + "

\\" + monitorlogger.datetime + "

.log");

201}

202return

monitorlogger;

203}

204case

"journal":

205217 journallogger.config(path + "

\\" + journallogger.datetime + "

.log");

218}

219return

journallogger;

220}

221case

"comm":

222234 commlogger.config(path + "

\\" + commlogger.datetime + "

.log");

235}

236return

commlogger;

237}

238default

:239

243}

244245

}246

247/*

*248

* 配置日誌路徑及級別

249* 由本方法關閉前面的日誌並開啟新日誌

250*

*/251

public

void config(string

filepath)

252258

catch

(exception e)

259261

262this.level =level;

263this.filepath =filepath;

264265

try266

270catch

(exception e)

271275

}276

277/*

*278

* 寫日誌的基礎方法

279* 如果要改為寫資料庫或者其它流,只需更改本方法

280*

*/281

private

void log(string

strlog)

282299

this.sw.writeline(datetime.now.tostring() + "

- " +strlog);

300this

.sw.flush();

301}

302}

303304/**

305* 寫日誌

306*

*/307

public

void debug(string

strlog)

308314

}315

public

void error(string

strlog)

316321

}322

public

void info(string

strlog)

323328

}329

public

void warning(string

strlog)

330335

}336

337public

void debuguploaderror(string

strlog)

338344

}345

}346 }

呼叫示例:

1

private

void btn_db_click(object

sender, eventargs e)25

6private

void btn_com_click(object

sender, eventargs e)710

11private

void btn_log_click(object

sender, eventargs e)

12

例項方法 靜態方法 類方法

首先新建乙個日期date類,屬性為年,月,日,tomorrow 是例項方法,這個最常見,比較簡單,例項方法的第乙個引數是例項物件self 當我們傳入的年月日是2018 6 4這樣的形式,我們就需要先進行字串處理,在這裡使用了元組的拆包 這是最基本的方式,但是這樣寫會有乙個問題,每次傳參都需要進行字串...

類方法,例項方法,靜態方法

python 中的三種方法,有三種類方法,例項方法,靜態方法,這三種方法都在類中,區別在於呼叫的方式不同。例項物件能的呼叫這三種方法,類只能呼叫類方法和靜態方法。class foo object def init self,name self.name name deford func self 定...

例項方法 類方法 靜態方法

示例方法 第乙個引數為self,必須例項化之後才能呼叫的方法 類方法 使用 classmethod進行裝飾,第乙個引數為cls,可以被類呼叫,也可以被例項呼叫。靜態方法 使用 staticmethod進行裝飾,沒有固定的引數,可以被類呼叫,也可以被例項呼叫,一般可以說跟類和例項沒有關係。classa...