<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Java學習

    java,spring,structs,hibernate,jsf,ireport,jfreechart,jasperreport,tomcat,jboss -----本博客已經搬家了,新的地址是 http://www.javaly.cn 如果有對文章有任何疑問或者有任何不懂的地方,歡迎到www.javaly.cn (Java樂園)指出,我會盡力幫助解決。一起進步

     

    日志級別的選擇:Debug、Info、Warn、Error還是Fatal?

    軟件中總免不了要使用諸如 Log4net, Log4j, Tracer 等東東來寫日志,不管用什么,這些東東大多是大同小異的,一般都提供了這樣5個日志級別:
        × Debug
        × Info
        × Warn
        × Error
        × Fatal
    一個等級比一個高,但是在具體開發中,關于應該如何選擇適應的等級,卻沒有找到好的文章進行說明。記錄一下自己的一些看法,以便日后使用吧。

    === Debug ===
    這 個級別最低的東東,一般的來說,在系統實際運行過程中,一般都是不輸出的。

    因此這個級別的信息,可以隨意的使用,任何覺得有利于在調試時更詳細的了解系統 運行狀態的東東,比如變量的值等等,都輸出來看看也無妨。

    當然,在每一個 Debug 調用之前,一定要加上 If 判斷。

    === Info ===
    這個應該用來反饋系統的當前狀態給最終用戶的,所以,在這里輸出的信息,應該對最終用戶具有實際意義,也就是最終用戶要能夠看得明白是什么意思才行。

    從某種角度上說,Info 輸出的信息可以看作是軟件產品的一部分(就像那些交互界面上的文字一樣),所以需要謹慎對待,不可隨便。

    === Warn、Error、Fatal ===
    警告、錯誤、嚴重錯誤,這三者應該都在系統運行時檢測到了一個不正常的狀態,他們之間的區別,要區分還真不是那么簡單的事情。我大致是這樣區分的:

    所謂警告,應該是這個時候進行一些修復性的工作,應該還可以把系統恢復到正常狀態中來,系統應該可以繼續運行下去。

    所謂錯誤,就是說可以進行一些修復性的工作,但無法確定系統會正常的工作下去,系統在以后的某個階段,很可能會因為當前的這個問題,導致一個無法修復的錯誤(例如宕機),但也可能一直工作到停止也不出現嚴重問題。

    所謂Fatal,那就是相當嚴重的了,可以肯定這種錯誤已經無法修復,并且如果系統繼續運行下去的話,可以肯定必然會越來越亂。這時候采取的最好的措施不是試圖將系統狀態恢復到正常,而是盡可能地保留系統有效數據并停止運行。

    也就是說,選擇 Warn、Error、Fatal 中的具體哪一個,是根據當前的這個問題對以后可能產生的影響而定的,如果對以后基本沒什么影響,則警告之,如果肯定是以后要出嚴重問題的了,則Fatal之,拿不準會怎么樣,則 Error 之。

    === 一些疑惑 ===
    不過在實際使用中,基于上面的這種考慮,也還是有一些具體問題。最常見的就是要在最終產品中將輸出日志打開到那種級別才算好呢?

    例如在應用中有一個輸出窗口,一些系統狀態信息將被輸出到這個輸出窗口中。因為 Info 的級別是如此之低,所以為了讓用戶能夠看到有效的輸出信息,必須將日志級別開放到 Info 級別。但是 Warn 的級別比 Info 要高,所以用戶不得不被迫看到一些 Warn 的信息。而我們其實已經假定,Warn 信息其實并不影響系統的正常運行,這一般只代表系統中存在一些還沒有被發現或者修改的小 Bug。這些 Warn 信息會讓最終用戶困惑甚至恐慌,系統發出警告了,該怎么辦?

    個人觀點,Info 的級別應該比 Warn 更高才對,Warn 信息和 Debug 一樣,應該在產品測試和調試時使用,而 Info、Erro 以及 Fatal 則在產品發布后需要繼續使用。

    目前我所采用的解決方法是,對于 Warn、Error、Fatal 都添加一個相應的系統斷言,這樣,可以保證當發生這種問題時,在調試階段,可以立即得到提示。在軟件發布以后,這些信息也能被記錄到日志文件中去。
    {{{
    log.Warn("message");
    System.Diagnostics.Debug.Fail("警告", "message");
    }}}
    Debug.Fail 將導致編譯為 Debug 輸出時,會彈出一個消息警告窗口,這可保證在測試、調試階段不漏過任何一個潛在的錯誤。而在發布時,Release 編譯的輸出不會包括 Debug 語句,這就不會打擾最終用戶,而錯誤信息仍然能通過 log 記錄到日志中。

    posted on 2008-09-10 15:43 找個美女做老婆 閱讀(4541) 評論(0)  編輯  收藏


    只有注冊用戶登錄后才能發表評論。


    網站導航:
     

    導航

    統計

    公告

    本blog已經搬到新家了, 新家:www.javaly.cn
     http://www.javaly.cn

    常用鏈接

    留言簿(6)

    隨筆檔案

    文章檔案

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: AAA日本高清在线播放免费观看| 一级a性色生活片久久无少妇一级婬片免费放| 丰满人妻一区二区三区免费视频| 日本久久久免费高清| 中文字幕 亚洲 有码 在线| 3d成人免费动漫在线观看| 亚洲人成亚洲精品| a级午夜毛片免费一区二区| 国产亚洲大尺度无码无码专线 | 久久综合久久综合亚洲| 免费影院未满十八勿进网站| 亚洲日本乱码一区二区在线二产线| 久久青草国产免费观看| 久久亚洲美女精品国产精品| 国色精品va在线观看免费视频| 好男人资源在线WWW免费| 亚洲一区综合在线播放| 在线观看亚洲免费视频| 亚洲精品tv久久久久久久久久| 国产无遮挡裸体免费视频| 免费观看的av毛片的网站| 免费国产在线观看不卡| 国产91精品一区二区麻豆亚洲| 亚洲国产成人精品91久久久| 亚洲av午夜精品一区二区三区| 免费午夜爽爽爽WWW视频十八禁| 亚洲毛片av日韩av无码| 婷婷久久久亚洲欧洲日产国码AV| 啦啦啦手机完整免费高清观看| 成人免费无码大片A毛片抽搐 | 久久成人免费电影| 国产精彩免费视频| 成年在线观看免费人视频草莓| 伊人久久综在合线亚洲91| 三级毛片在线免费观看| 亚洲精品91在线| 青青久久精品国产免费看| 皇色在线视频免费网站| 亚洲爆乳精品无码一区二区| 亚洲午夜福利精品无码| 最近免费字幕中文大全视频|