我花了大部分時間用C編寫軟件。最近,我一直在研究將被歸類爲中間件的庫。他們只需要存在兩個軟件進行通信。從庫中暴露日誌接口
在開發過程中,我發現分析日誌可以更快更輕鬆地追蹤和隔離錯誤。很顯然,我希望庫的任何生產使用都不需要頻繁檢查日誌輸出。
但實際情況是一些錯誤只出現在生產環境中。造成這種情況的一個常見原因可能是圖書館另一面的實施方式正在做一些標準方面的灰色區域。因此,需要能夠分析生產環境中的日誌。
那麼從中間件類型API公開日誌的最佳做法是什麼?有沒有關於這個話題的文獻?
我心目中目前兩個想法:
首先是使用#define
來控制我的源代碼記錄語句的存在。在生產環境中,庫可以編譯兩次。一個共享對象將啓用日誌語句。另一個將在沒有日誌記錄的情況下進行優化。通過在運行時更改動態鏈接的庫,可以啓用和禁用日誌記錄。
#define
方法可行,但可能不靈活。另外,我對性能不是很在意。我先採取工具的做法,優化第二。
我的第二種方法是堅持使用UNIX風格的哲學,並在庫上通過傳遞文件描述符來啓用日誌功能。這可以使日誌在運行時啓用或禁用。如果設置了文件描述符,則啓用日誌記錄。如果沒有設置,則不記錄。顯然,這有其自身的缺點。但這是一個簡單的方法。