2011-07-27 25 views
0

我正在使用Eclipse RCP插件。插件中的一個命令會執行一些數據驗證,並將消息記錄到Eclipse錯誤日誌視圖。從我的插件清除Eclipse錯誤日誌視圖

我希望命令在開始工作前清除錯誤日誌,這樣當命令完成時,錯誤日誌只包含與命令最近一次調用相關的錯誤。

我發現,我可以這樣做刪除日誌文件本身:

Platform.getLogFileLocation().toFile().delete(); 

然而,正如你所預料的,錯誤日誌不刷新其內容只是因爲我偷偷它的背後並刪除該文件。

我在org.eclipse.ui.internal.views.log.LogView四處探索,雖然我確實看到視圖自我更新的地方,但我沒有看到直接觸發「清除&刷新」的方法。

有沒有辦法要求錯誤日誌仔細檢查其支持文件並刷新自己?或者,是否有更合理的方式來清除視圖?

更新:一個稍微缺憾的方式獲取該日誌的更新本身是日誌別的

我目前登錄的「信息」的消息之後我刪除舊的日誌文件,這是不理想,但它讓我足夠近的地方,我想,現在:

Platform.getLogFileLocation().toFile().delete(); 
Plugin plugin = Plugin.getPlugin(); 
ILog log = plugin.getLog(); 
log.log(new Status(IStatus.INFO, Plugin.PLUGIN_ID, "Starting utility validation pass...")); 

回答

1

首先,你說你正在創建一個RCP產品。日誌視圖來自PDE插件,因此除非您有意在RCP中指定它,否則它將永遠不可用於您的用戶。 請注意,您的開發啓動配置可能會將其作爲啓動的一部分加入,但它可能不在您的實際RCP中。

對於你的問題 - 我看不到任何簡單的方法,沒有嚴重破解LovView類的私有/受保護成員。 如果您打算在您的RCP中包含LogView,則可以考慮擴展LogView,並公開一種刪除日誌的方法(或在刪除日誌文件後立即調用'protected'reloadLog())。

希望有幫助

+0

我們包括PDE的觀點,是的。擴展LogView是一個有趣的概念。首先想到的問題是,Log View顯然不在我正在處理的插件中。我期望的是,我的插件將來可以用於多個基於RCP的項目,全部基於我的團隊使用的通用「目標平臺」。因此,期望其他項目都包含「默認」日誌視圖是合理的。我們必須調整「目標平臺」才能使用「自定義」日誌視圖。絕對的食物爲思想;非常感謝。 – stracka

+0

接受sgibly的答案,因爲我目前的「解決方法」包含兩種不同的「kludge」口味,並且他關於擴展LogView的想法很好。 – stracka