2012-06-14 28 views
2

我已經編寫了一個PHP5.3庫來通過SNMP與我們的幾個設備進行通信。我希望做的下一部分是允許要實施它的公司部門將Logger附加到該類,以便於調試,錯誤處理等。如何在庫中提供日誌記錄API

是否有任何常見的實踐,標準或規則去做這個?我希望解決方案儘可能靈活,以便可以附加一個記錄器,如Monolog,Zend_Log,Analog等...

我正在考慮編寫一個強制使用通用API的接口,觀察者模式,(因爲我們只需要記錄,這可能是矯枉過正,過於靈活的)...

TL;博士
有沒有對如何在實現API的任何規則或模式,最好的例子庫提取日誌並將其委託給實現者選擇的日誌系統。

回答

1

Adapter Pattern。更具體的對象適配器。不同的記錄器系統意味着不同的界面,您的應用程序應該能夠使用所有這些系統。看看GOF的「設計模式」一書中的可插入適配器。

1

這就是門面模式,是凡事都要通過一個接口只露。我已經實現了類似的東西,一個常見的日誌記錄界面(儘管在C#中)。很多時候,你定義了一個ILog接口,然後實現將驅動實際日誌服務的'驅動程序'。

消費者只需要一個記錄器(LogerFactory :: GetLog()),我認爲記錄器可以是單身的,因此工廠將始終返回相同的實例。

如果你想同時使用不同的日誌服務(一個保存到文件,其他保存到數據庫爲例),然後觀察和Responsiblities鏈工作得非常好這裏。但這一切都取決於功能。至少你只有ILog接口和它的具體實現。

相關問題