log4j2不会为混淆代码打印异常日志

时间:2013-11-25 07:07:37

标签: obfuscation log4j2

我们在构建中使用混淆jar,我们使用Log4j2进行日志记录。但是,我们正在记录为字符串的信息性日志正在正确记录。但是,异常情况下的日志,即异常跟踪或exceprion.getmessage()不会打印详细信息。这也是模糊的形式,即它不可读。

有任何建议可以克服这个问题吗?

2 个答案:

答案 0 :(得分:0)

这听起来像预期的行为...... 在运行时,类名和包名称被加扰,因此堆栈跟踪可能看起来不漂亮。

你的混淆器没有去混淆功能吗?我想它会在进行加扰时生成带有元数据(明文名称和加扰名称之间的映射)的文件。

如果您的用户遇到需要支持的问题,他们会向您发送他们的(加扰的)堆栈跟踪。您可以使用该元数据文件解密该堆栈跟踪并使其再次可读。 (您应该为您发布的每个版本的库保留一个。)这就是您处理支持问题的方法。

答案 1 :(得分:0)

您可能正在初始化您的记录器:

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

在开发过程中重复命名/重构代码时,这种方法非常有用。但是一旦你对你的代码感到满意,你应该用这样的常量名称替换该行:

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

这样,类名 - 即记录器名称 - 不会被混淆。