為Eclipse外掛程式添加日誌架構

來源:互聯網
上載者:User

兩種增強Eclipse日誌功能的方法

為什麼要採用日誌?

良好的開發人員都知道精心設計、測試和調試的重要性。雖然 Eclipse 可以協助開發人員實現這些任務,但是它怎樣處理日誌呢?很多開發人員相信對於良好的軟體開發實踐來說,日誌是不可或缺的一部分。如果您曾經修正過他人部署過的程式,您無疑也會同意這一點。幸運的是,日誌對於效能的影響很小,大部分情況下甚至根本不會對效能產生任何影響,而且由於日誌工具非常簡單易用,因此學習曲線也非常平滑。因此,對於現有的優秀工具,我們沒有理由不在應用程式中添加日誌功能。

可以使用的工具

如果您正在編寫一個 Eclipse 外掛程式,那麼您可以使用 org.eclipse.core.runtime.ILog 所提供的服務,它可以通過 Plug 類的 getLog() 方法進行訪問。只需要使用正確的資訊建立一個 org.eclipse.core.runtime.Status 的執行個體,並調用 ILog 的 log() 方法即可。

這個日誌對象可以接收多個日誌監聽器執行個體。Eclipse 添加了兩個監聽器:

一個監聽器向 "Error Log(錯誤記錄檔)" 視圖中寫入日誌。

一個監聽器向位於 “${workspace}/.metadata/.log" 的記錄檔中寫入日誌。

您也可以建立自己的日誌監聽器,只需實現 org.eclipse.core.runtime.ILogListener 介面並使用 addLogListener() 方法將其添加到日誌對象中即可。這樣,每個日誌事件都可以調用這個類的 logging() 方法。

雖然所有的內容都非常簡單,但是這種方法存在一些問題。如果您希望修改一個已部署好的外掛程式目標,那麼應該如何處理?或者說要如何控制記錄下來的日誌資訊的數量?還有,這種實現可能會對效能造成影響,因為它總是要向所有的監聽器發送日誌事件。這就是為什麼我們通常只在極端的情況(例如錯誤條件)中才會看到要記錄日誌的原因。

另一方面,還有兩個專門用於日誌的傑出的工具。一個來自 Java 2 SDK 1.4 的 java.util.logging 包;另外一個來自 Apache,名為 Log4j。

這兩個工具都採用了日誌對象的階層的概念,都可以將日誌事件發送到任意數目的處理常式(Handler,在 Log4j 中稱為 Appender)中,它代表了發送給格式化程式(Formatter,在 Log4j 中稱為 Layout)進行格式化的訊息。這兩個工具都可以通過屬性檔案進行配置。Log4j 還可以使用 xml 檔案進行配置。

記錄器可以有一個名稱並與某一層級相關聯。記錄器可以繼承父母的設定(層級,處理常式)。名為“org”的記錄器會自動成為另外一個名為 “org.eclipse” 的記錄器的父母;因此不管您在設定檔中怎樣對“org”進行設定,這些設定都可以被“org.eclipse”記錄器繼承。

我更喜歡哪一個工具?這兩個工具我都曾經用過,不過我比較喜歡 Log4j。只有在非常簡單的程式中我才使用 java.util.logging,我並不想在這樣的程式中添加 log4j.jar。關於這兩個工具的詳細介紹,請參閱 Java 文檔和 Apache 的網站。

一種改進的日誌

如果存在改進 Eclipse 日誌體驗的方法,那不是很棒嗎?但這樣做有兩個問題:

缺少外部設定檔。

效能問題,同時還有缺乏對日誌行為進行細粒度控制。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.