2011-08-29 93 views
2

假設我有一個像下面這樣的配置文件來啓動我的應用程序。我怎麼能知道從應用的,比如說裏面的值,-Dlog4j.configuration如何從Java內部訪問jvmArgs?

jvmArg=-server 
jvmArg=-Xms512m 
jvmArg=-Xmx1024m 
jvmArg=-Dcatalina.base=tomcat 
jvmArg=-Dcatalina.home={tomcat_HOME} 
jvmArg=-Dcatalina.config=file:cfg/catalina.properties 
jvmArg=-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager 
jvmArg=-Djava.util.logging.config.file=cfg/logging.properties 
javaMain=org.apache.catalina.startup.Bootstrap 
javaMainArg=-config ../cfg/server.xml 
javaMainArg=start 
jvmArg=-Dlog.directory=log 
jvmArg=-Dlog4j.configuration=file:/cfg/test/log4j.properties 

回答

6

使用System.getProperty()可以獲得所有變量的映射。這僅適用於以-D開頭的屬性。

要獲得所有JVM參數,你可以做

RuntimeMXBean runtimemxBean = ManagementFactory.getRuntimeMXBean(); 
List<String> arguments = runtimemxBean.getInputArguments(); 
3

-Dlog4j.configuration設置一個系統屬性,所以對於:System.getProperty("log4j.configuration")