我想改变日志记录级别,具体取决于我是否正在进行调试,但是我找不到代码片段来检查应用程序是否在调试模式下运行。
我正在使用eclipse来调试应用程序,所以如果解决方案只能在Eclipse中运行,那就没问题了。
您可以修改调试配置。例如,仅在“调试配置”中添加特殊VM参数。您可以使用System.getProperties()
来读取提供的参数。
更好的是,修改配置(运行和调试)以加载不同的日志记录配置文件。如果您需要编写代码来确定日志记录级别,那就不好了。这应该只是配置问题。
在how-to-find-out-if-debug-mode-is-enabled找到了答案
boolean isDebug = java.lang.management.ManagementFactory.getRuntimeMXBean().
getInputArguments().toString().indexOf("-agentlib:jdwp") > 0;
这将检查是否使用了Java Debug Wire Protocol代理。
没有一种官方认可的方法来可靠地确定任何给定的JVM是否处于来自JVM本身的调试模式,并且依赖于工件将在未来的某个时间中破坏您的代码。
因此,您需要自己介绍一种方法。建议:
你试过在eclipse运行配置中添加一个vm参数吗?
将其作为VM参数传递
-Ddebug=true
然后你可以做Boolean.getBoolean("debug")
检查这个。
如果您从自己的程序设置调试级别,可能是这样的行:
public static final boolean DEBUG_MODE = System.getProperty("java.vm.info", "").contains("sharing");
会做的伎俩。
刚在eclipse3.5中测试过:
package test;
public class Test
{
/**
* @param args
*/
public static void main(String[] args)
{
System.out.println(System.getProperty("java.vm.info", ""));
}
}
将显示:
mixed mode, sharing
如果没有调试就启动
mixed mode
如果使用调试启动程序执行
这是高度依赖系统的。 我假设“共享”表示跨VM类共享是活动的。 这是一项非常新的功能,仅适用于某些平台。 此外,启用或禁用它可能有很多可能的原因,因此我不会将其用于调试模式检测。
(注意:我用最新的jdk1.6b14进行了测试。我把它留作CW答案。)
看看这里:
http://wiki.eclipse.org/FAQ_How_do_I_use_the_platform_debug_tracing_facility%3F
此外,我想你不知道你的应用程序是否在调试模式下运行。您可以做的唯一事情是在调试时将参数传递给JVM。
我的