關鍵字:日誌操作、類靜態例項
今日主旋律是bug。 先是udp的非同步接收bug。再是乙個每當日期變更nmonitorsystem程式崩潰的bug。不過還好.net的異常系統事件可以捕捉到即使沒有**也可以定位到錯誤源。順便說一句很多時候.net異常很難確定,即使進入除錯沒原始碼看到的也只是彙編**很難定位異常。這時候才發現debug程式的意義。
這個異常出現很奇葩,1是因為這個庫用了4年了再很多專案中用到,甚至之前的銀行程式。2出現的條件是剛好在日期變化是需要日誌記錄捕捉的程式異常。3log普通的異常沒有呼叫到之前。
logger類**(修改日期變更bug)
1using
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 }
呼叫示例:
1private
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...