2 回答

TA貢獻1806條經驗 獲得超8個贊
如果我理解你想要做什么,你需要定義一個日志包將實現的接口。如果您將 Logger 定義為空接口,您將無法調用任何這些方法。相反,您需要定義一個包含要使用的方法(調試、信息、錯誤等)的接口。任何日志包都必須實現這些方法。如果某個特定的日志記錄包還沒有正確的方法集,則必須編寫一些包裝器代碼來在定義接口時實現該接口。

TA貢獻2051條經驗 獲得超10個贊
我一直在搜索并找到了這篇文章. 很有意思。作為基礎設施經理/技術人員,我一直在使用(和使用過)的許多軟件中遺漏的一件事是能夠獲得盡可能深入的信息來識別和修復問題,甚至記錄所有內容以進行審計/安全提議。很多時候,我們面臨一些問題,即使在調試模式下我們也無法找到問題的確切原因,我們最終只能找到“可能”的原因?,F在回到開發世界,看看開發人員如何處理日志和庫,我認為這可能是一個原因(缺乏“主程序與其庫之間的互操作性”)。因為庫通常有“自己的” “ 登錄(或根本不登錄)并且很多時候,并沒有給出“完全控制” 關于庫內部發生的事情,在大多數情況下,正在開發主程序(使用此類庫)的開發人員將無法為其自己的應用程序提供必要的日志記錄詳細信息。當然,我理解在開源世界中,如果您想獲得更詳細的信息,包括來自您使用的庫的信息,因為它是開源的,您可以簡單地進行更改并完成。但是,這可能會使圖書館的使用(考慮使用圖書館的優勢主要是為了不花時間“重新創建輪子”,在其他世界的可重用性)沒有應有的幫助。正如所引用的帖子所提到的,處理它的一種方法是始終向調用者發送要處理的“必要”信息。但通常它適用于錯誤、致命和信息級別的事件。但是以調試和跟蹤為例,在開發庫時并不“實用”(出于多種原因),然后我認為一個很大的原因是開發人員在開發庫時,他已經需要所有調試和跟蹤用于測試,但不一定發送回調用者。文章中詳述的另一種方法是使用處理程序,但通過這樣做,庫的開發人員將有更多的工作要做。正如安迪回答的那樣(并且也在帖子中討論過),另一種方法是創建一個接口來接收主程序的記錄器并使用它,為了使這個選項正常工作,它應該使用 stdlib 日志(或一些日志庫)實現最常見的日志記錄級別)以防調用程序不涉及日志記錄。為了我現在的“愿望”(就像我
- 2 回答
- 0 關注
- 142 瀏覽
添加回答
舉報