【发布时间】:2012-07-16 11:54:54
【问题描述】:
来自 C#,我无法相信 Java 只有在调试程序时才能执行代码。不知何故,Log4J 似乎能够做到这一点。有谁知道这种可能性?我正在考虑这样的事情:
#if DEBUG
executedCode();
#endif
或者是这样的:
if (Java.isDebugging())
executeCode();
想法?
编辑:感谢 Matt Ball,this 中的代码可能重复工作:
public static boolean debugging = java.lang.management.ManagementFactory.getRuntimeMXBean().
getInputArguments().toString().indexOf("-agentlib:jdwp") > 0;
【问题讨论】:
-
是什么让你觉得 Log4J 可以做到?我知道它确实有一个 DEBUG 日志级别,但是 Log4J 的日志级别是在配置文件中设置的。
-
Log4j 的
Logger#isDebugEnabled()与代码是否被调试无关。它仅基于该记录器的配置。 -
如果设置了调试标志,您可能只需添加一个命令行标志并检查 argv。非常简单,满足您的需求