軟件開發(fā)詳細(xì)設(shè)計(jì) 軟件開發(fā)中日志的功能是什么怎么設(shè)計(jì)?
軟件開發(fā)中日志的功能是什么怎么設(shè)計(jì)?當(dāng)然,在不好算開發(fā)中,每個(gè)軟件應(yīng)該有自己的日志系統(tǒng),每種語言都是自己的日志框架/模塊,不斷互聯(lián)網(wǎng)和大數(shù)據(jù)的蓬勃發(fā)展,分布式的日志系統(tǒng),這些日志分析系統(tǒng)也應(yīng)用方法的更
軟件開發(fā)中日志的功能是什么怎么設(shè)計(jì)?
當(dāng)然,在不好算開發(fā)中,每個(gè)軟件應(yīng)該有自己的日志系統(tǒng),每種語言都是自己的日志框架/模塊,不斷互聯(lián)網(wǎng)和大數(shù)據(jù)的蓬勃發(fā)展,分布式的日志系統(tǒng),這些日志分析系統(tǒng)也應(yīng)用方法的更加廣泛的,越來越大成熟。
從以下幾方面踏入日志設(shè)計(jì)
第一,誰在使用日志
有一個(gè)問題,可能會(huì)很多開發(fā)人員卻沒認(rèn)真思索過,就是日志到底是給誰是用?用戶,運(yùn)維,開發(fā)人員,軟件學(xué)習(xí)愛好者?不過,答案是所有的。
第二,完全不同的角色,有不同的視角,在不同的階段,有差別的需求,那么日志就應(yīng)該是可以提供差別的幫助。在做日志模塊的內(nèi)容設(shè)計(jì)時(shí),也應(yīng)該是站在不同的角度去決定,要思維清晰,哪些信息給用戶看,哪些給運(yùn)維人員看,哪些給程序員看。要都講究輕重主次,又不是說祥細(xì)就一定會(huì)好。
第三,日志的等級(jí)
開發(fā)過一些系統(tǒng),大體的感受是這樣的:剛開始的時(shí)候,大家都低些比較好都講究,日志的等級(jí)、內(nèi)容、位置都會(huì)去努力思考、選擇??墒前殡S著時(shí)間不停的延伸,功能不斷地的擴(kuò)展,日志慢慢的變的動(dòng)蕩,結(jié)果已淪為亂麻一片血紅!
日志常見有多個(gè)等級(jí),等級(jí)的確光是指“祥細(xì)程度”,還關(guān)系不到適用場(chǎng)景,服務(wù)對(duì)象,目的功能等。
第四,日志使用的幾種場(chǎng)景
1)開發(fā)過程中:
日志是一種表示友好、強(qiáng)橫的記錄軟件運(yùn)行時(shí)內(nèi)部結(jié)構(gòu)和狀態(tài)的工具,是調(diào)試?yán)?,?dāng)然每種語言都會(huì)提供給拿來的調(diào)試工具,.例如c/cgdb,java的jdb等等。不過不屬于到業(yè)務(wù)邏輯,并發(fā),交互等情況時(shí),肯定日志更輕輕巧巧、便捷快速!我象是在對(duì)“眼生”代碼(例如開源軟件)學(xué)習(xí)時(shí),才會(huì)用gdb等調(diào)試工具,強(qiáng)大無比但變得笨重,更適合我梳理代碼結(jié)構(gòu),而不是功能或業(yè)務(wù)結(jié)構(gòu)!
2)測(cè)試過程中:
在進(jìn)行功能測(cè)試時(shí),或trace信息,得象看監(jiān)控慢放時(shí)一樣的,讓犯罪分子難伸遁行!
3)軟件學(xué)習(xí)時(shí):
學(xué)習(xí)軟件時(shí),除開軟件的架構(gòu)設(shè)計(jì)、業(yè)務(wù)功能、代碼邏輯,日志總能可以提供很多線索、很多幫助。記住很久以前,看某個(gè)開源軟件系統(tǒng)的代碼,作戰(zhàn)部署完以后,再然后打開trace跑一邊,系統(tǒng)的整體結(jié)構(gòu)及內(nèi)容,立見分曉,再加強(qiáng)怎么設(shè)計(jì)文檔,迅速就沒知道了!就那一瞬間,讓我深沉的記住,好的日志系統(tǒng),那個(gè)是這么多的神奇啊!
4)正常運(yùn)行:
一定不要開著debug跑系統(tǒng),沒有意義!前提是,ERROR信息要準(zhǔn)、規(guī)范,客戶只關(guān)系生死問題,再多的信息對(duì)他們也沒有意義!
軟件工程師是前端還是后端?
軟件工程師一般是后端,前端的叫前端工程師或則UI設(shè)計(jì)師。
一般來說,軟件工程師是一個(gè)廣義的概念,除開軟件設(shè)計(jì)人員、軟件架構(gòu)人員、軟件工程管理人員、程序員等一系列崗位,工作內(nèi)容都與軟件開發(fā)生產(chǎn)去相關(guān)。軟件工程師的技術(shù)要求是也很新華考資的,以外最基礎(chǔ)的編程語言(C語言/C/JAVA等)、數(shù)據(jù)庫技術(shù)(SQL/ORACLE/DB2等)等,還有一個(gè)諸多如JAVASCRIPT、AJAX、HIBERNATE、SPRING等前沿技術(shù)。況且,關(guān)于網(wǎng)絡(luò)工程和軟件測(cè)試的其他技術(shù)也要所涉獵范圍。