gpt4 book ai didi

java - 如何删除 J2SE/J2EE 应用程序(非 Android)中的日志调用

转载 作者:行者123 更新时间:2023-12-01 13:24:01 27 4
gpt4 key购买 nike

我知道使用 Proguard 删除记录器调用适用于 Android 应用程序。

如何在标准 Java 应用程序中实现这一目标?

import java.util.logging.Logger;

public class Clazz {

private static final Logger LOGGER = Logger.getLogger(Clazz.class.getName());

public void foo() {
LOGGER.info("bar");
}

}

在我的 Proguard 配置中,我有以下内容:

-assumenosideeffects class java.util.logging.Logger { *; }
-whyareyoukeeping class java.util.logging.Logger

运行时给出以下输出:

 [proguard] java.util.logging.Logger
[proguard] is a library class.

我知道它是一个库,但无论如何我想删除对它的所有调用。 Proguard 可以做到这一点吗?如果没有,为什么?为什么这对于 Android 来说如此方便,记录器字段或缺少记录器字段是否与此有关?

最佳答案

假设您没有禁用优化,您应该能够删除这样的日志记录调用 - 这是删除不必要和不需要的调用的优化步骤。 ProGuard 无法删除 Logger 类本身,因为它是一个运行时库类,如您所见。

但是,您不能使用通配符来匹配方法,因为这包括 wait() 和 Finalize() 等基本方法(影响所有类)。您必须枚举要删除的方法。例如:

-assumenosideeffects class java.util.logging.Logger {
void info(java.lang.String);
}

关于java - 如何删除 J2SE/J2EE 应用程序(非 Android)中的日志调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21883389/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com