記錄我已經實現了由幾個班的算法框架。對於日誌記錄,我使用slf4j和logback。所以我的許多課程都有這樣的代碼:如何處理在生產代碼(的logback/SLF4J)
protected final Logger logger = LoggerFactory.getLogger(Myclass.class);
...
logger.debug("Some debug information");
現在我想打包我的代碼並使其生產就緒。我如何處理日誌代碼?
- 運行代碼時,開發人員通常會因性能原因關閉日誌記錄。
- 在開發代碼的調試信息是非常有用的,這樣刪除所有調試語句將是一個壞主意。
所以理想用戶應該能夠啓用/禁用日誌記錄。我通常有一個logback.xml配置文件,它在每個類的基礎上指定日誌級別。我應該在包中包含這樣一個文件嗎?或者我應該期望用戶自己編寫或提供默認配置文件?
我有代碼來配置所述算法:
/**
* Read algorithm confirguration from properties file
**/
protected Configuration(Properties properties){...}
該函數讀取屬性文件並相應地設置了一些算法參數。這可以用來啓用/禁用各種類的日誌記錄嗎?
太棒了!關於你的第一個建議:我需要使用需要在類路徑中的logback.xml配置文件。你會推薦將這個文件包含到包含框架的jar包中,還是將這個文件作爲外部文件提供給使用該框架的用戶?我認爲最好將它作爲外部文件提供,以便用戶可以對其進行編輯並打開/關閉單個類的日誌記錄? –
千萬不要*將你的logback.xml放入部署文件中。諸如這些配置應該是可修改的而不觸及部署,同樣重要的是完全由最終用戶決定。如果你正在提供一個框架來使用,我甚至會提供一個日誌記錄配置的片段,它也可以很好地與include的logback-configuration機制一起工作:http://logback.qos.ch /manual/configuration.html#fileInclusion通過這種方式,您可以爲最終用戶完全控制和靈活地配置日誌記錄。 – sheltem
畢竟,應該記住,沒有不平凡的應用程序只使用*一個*框架。最好的方法是始終假定你的用戶也使用其他用戶,並確保你的框架足夠靈活以便與其他人一起工作,而不是以某種方式指定某種東西。 – sheltem