我想更改日志记录级别,具体取决于我是否正在进行调试,但是我找不到代码片段来检查应用程序是否在调试模式下运行。
我正在使用eclipse来调试应用程序,所以如果解决方案只能在Eclipse中运行,那就没关系了。
答案 0 :(得分:50)
在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代理。
答案 1 :(得分:21)
您可以修改调试配置。例如,仅在“调试配置”中添加特殊VM参数。您可以使用System.getProperties()
来读取提供的参数。
更好的是,修改配置(运行和调试)以加载不同的日志记录配置文件。如果您需要编写代码来确定日志记录级别,那就不好了。这应该只是配置问题。
答案 2 :(得分:7)
没有一种官方认可的方法来可靠地确定任何给定的JVM是否处于调试模式,而是来自JVM本身,并且依赖于工件只会在将来的某个时间内破坏您的代码。
因此,您需要自己介绍一种方法。建议:
答案 3 :(得分:5)
您是否尝试在eclipse运行配置中添加vm参数?
将其作为VM Argument传递
-Ddebug=true
然后你可以Boolean.getBoolean("debug")
进行检查。
答案 4 :(得分:2)
如果您从自己的程序设置调试级别,可能是以下行:
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答案。)
答案 5 :(得分:0)
看看这里:
http://wiki.eclipse.org/FAQ_How_do_I_use_the_platform_debug_tracing_facility%3F
此外,我认为您无法知道您的应用是否在调试模式下运行。您可以做的唯一事情是在调试时将参数传递给JVM。
马努
答案 6 :(得分:0)
如果使用套接字(例如9999),则可以调用netstat来检查是否已建立连接:
#!/usr/bin/env python3
import pandas as pd
import numpy as np
# creating a data frame
df = pd.read_csv("CSVData2.csv")
#Change region to string
df['Region'] = df['Region'].apply(str) # I have tried both of these.
df['Region'] = df['Region'].astype(str)
df_out = pd.crosstab(df['Region'], df['Sales'], margins = True, margins_name = 'Total')
df_out.to_excel(r'/users/python/documents/DataFrametest.xlsx', sheet_name='Rawdata', index = True)
然后在标准输出中扫描127.0.0.1:9999。*已建立