2013-11-25 26 views
0

我們在構建中使用模糊jar,並且我們使用Log4j2來進行日誌記錄。但是,我們記錄爲字符串的信息性日誌正在記錄正確。但是,如果出現異常,例如異常或exceprion.getmessage()的痕跡,日誌不會顯示詳細信息。這也是混淆的形式,即它不可讀。log4j2不會打印用於模糊代碼的異常日誌

任何建議來解決這個問題?

回答

0

這聽起來像預期的行爲... 在運行時,類名稱和包名稱是混亂的,所以堆棧跟蹤可能看起來不太漂亮。

您的混淆器是否沒有去混淆功能?我想它會在加擾時生成一個帶有元數據的文件(在明文名稱和亂碼名稱之間進行映射)。

如果您的用戶遇到需要支持的問題,他們會向您發送他們(亂碼)的堆棧跟蹤。您可以解讀堆棧跟蹤,並使用該元數據文件重新讀取。 (您應該爲您發佈的每個版本的庫保留一個)。這就是您將如何處理支持問題的方法。

0

你可能會初始化你的記錄器是這樣的:當您重命名/重構你的代碼了很大的發展過程中

Logger logger = LogManager.getLogger(MyClass.class.getName()); 

這種方式是非常有用的。但是,一旦你滿意你的代碼,你應該用這樣的常量名替換該行:

Logger logger = LogManager.getLogger("my.package.MyClass"); 

這樣的類名 - 即記錄名稱 - 不會進行模糊處理。