Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/368.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java日志管理器在运行Java代码时通过传递属性覆盖默认值_Java_Java.util.logging - Fatal编程技术网

Java日志管理器在运行Java代码时通过传递属性覆盖默认值

Java日志管理器在运行Java代码时通过传递属性覆盖默认值,java,java.util.logging,Java,Java.util.logging,是否有一种方法可以通过在启动应用程序时传递命令行属性来覆盖java中LogManager的配置。 目前,我使用 File fn = new File(filename); URL url = fn.toURI().toURL(); LogManager.getLogManager().readConfiguration(url.openStream()) filename contains this handlers = java.util.logging.ConsoleHandler .

是否有一种方法可以通过在启动应用程序时传递命令行属性来覆盖java中LogManager的配置。 目前,我使用

File fn = new File(filename);
URL url = fn.toURI().toURL();
LogManager.getLogManager().readConfiguration(url.openStream())

filename contains this

handlers = java.util.logging.ConsoleHandler

.level = CONFIG

java.util.logging.ConsoleHandler.level = ALL
java.util.logging.ConsoleHandler.formatter = abc.common.util.LogFormatter

java.util.logging.FileHandler.level = ALL
java.util.logging.FileHandler.formatter = abc.common.util.LogFormatter
我无法更改文件,但需要将.level=CONFIG更改为其他值。我不能更改代码,但只能在启动应用程序时传递java属性


有可能实现吗?

鉴于您的限制,唯一可以使用的命令行参数是system property。然后,您必须修改classpath参数以包含自定义日志管理器,以执行所需的步骤


或者,如果您的目标只是更改根记录器级别,则可以附加到正在运行的应用程序,并使用它覆盖当前设置。在MBeans选项卡中,转到java.util.logging->logging->Operations->setLoggerLevel。删除“p0”字段中的所有字符,并在“p1”字段中以大写形式输入级别名称或级别编号。单击setLoggerLevel以更新该级别。

您可以使用-

 java -Djava.util.logging.config.file=<filelocation>
java-Djava.util.logging.config.file=

这一点很好。但是,java.util.logging.config.file参数仅修改无参数LogManager.readConfiguration方法的行为。该示例使用LogManager.readConfiguration(InputStream)方法,该方法不查找该系统属性。我检查了代码,它调用了重置,因此您的权限无效。令人沮丧的!你能创建一个自定义版本的类,并在类路径中放在它前面吗?同意。这听起来像是我在别处读到的答案