簡體   English   中英

在Java記錄系統中使用注釋/代碼生成

[英]Using Annotations / Code Generation to in Java Logging System

我正在嘗試增強Java日志記錄的功能,以使其效率更高。 日志記錄的典型示例如下所示:

logger.warn("This is a warning about " + a.toString() + " " + b.toString()

通過添加if檢查,可以使效率提高一點:

if (logger.isWarnEnabled())  {...}

“ if”檢查將保存參數構建和字符串連接。 當然,添加這些“ if”語句會使代碼有點腫和混亂。 我想設計一些東西,可以在使用時將所有logger.info / logger.warn等調用替換為包含“ if”檢查的版本。

關於這樣做的一些好的方法有什么建議嗎? 我想避免在源文本本身中直接查找/替換的內容,因為這容易出錯。 也許利用注釋和字節碼操作的東西? 這些不是我廣泛研究過的東西,因此任何幫助或建議都將不勝感激。

首先,我不知道您要做什么簡單的方法。


但是,我也建議您不要嘗試使用注釋處理或字節碼重寫來執行此操作。 兩者都很復雜,並且都意味着您執行的代碼與您編寫的代碼不同。 這兩個都會使下一個不得不維護您的代碼的人的工作變得繁瑣。

我還建議您不要嘗試使用普通搜索/替換來應用此優化:

  • 正如您指出的那樣,您可能會犯一個錯誤。

  • IMO,您不應該全部替換它們。 (繼續閱讀...)


現實情況是,如果日志語句可能頻繁執行,則在日志語句上添加保護僅是值得的優化。 因此, 考慮在何處應用此優化是一個好主意。 同時,您應該考慮log語句是否值得。 (如果您的代碼中充滿了經常執行的日志語句,那么如果將級別設置為DEBUG,則很可能會生成過多的日志記錄。您可能希望避免這種情況。)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM