Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/323.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/8/logging/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 运行JAR时如何配置日志记录?_Java_Logging_Jar - Fatal编程技术网

Java 运行JAR时如何配置日志记录?

Java 运行JAR时如何配置日志记录?,java,logging,jar,Java,Logging,Jar,我是Java日志API新手,需要帮助解决此问题: 创建应用程序时,我的配置文件存储在项目根文件夹中,因此我使用-Djava.util.logging.config.file=logging.properties开关来运行程序。 但后来我导出了可执行JAR。 现在如何配置日志记录?当我使用-D开关指定配置文件的路径时,它不起作用。您不能在MANIFEST.MF文件中指定JVM参数,因此您必须在命令行或使用快捷方式指定日志属性: java -Djava.util.logging.config.fil

我是Java日志API新手,需要帮助解决此问题: 创建应用程序时,我的配置文件存储在项目根文件夹中,因此我使用
-Djava.util.logging.config.file=logging.properties
开关来运行程序。 但后来我导出了可执行JAR。
现在如何配置日志记录?当我使用-D开关指定配置文件的路径时,它不起作用。

您不能在MANIFEST.MF文件中指定JVM参数,因此您必须在命令行或使用快捷方式指定日志属性:

java -Djava.util.logging.config.file=logging.properties -jar yourjar.jar
否则,您可以在JAR中打包一个属性文件(在您的例子中是logging.properties),在 启动并将这些设置放入系统属性中。

显示:

此外,LogManager使用两个可选的系统属性 允许对读取初始配置进行更多控制:

"java.util.logging.config.class"
"java.util.logging.config.file" 
这两个属性可以通过Preferences API或as命令进行设置 “java”命令的行属性定义,或作为系统属性 传递给JNI_CreateJavaVM的定义

如果设置了“java.util.logging.config.class”属性,则 属性值被视为类名。给定的类将是 加载后,将实例化一个对象,并且该对象的构造函数 负责读取初始配置中的数据。(该物体 可以使用其他系统属性来控制其配置。)的 备用配置类可以使用readConfiguration(InputStream) 在LogManager中定义属性


因此,要么使用
java.util.logging.config.file
系统属性,将配置文件存储在jar文件之外(如果您希望能够自定义日志属性以调试或分析某些奇怪的行为,这可能是一个好主意),要么将配置文件存储在您想要的任何位置(例如,在jar文件中),并使用
java.util.logging.config.class
系统属性加载并实例化一个类,该类将读取jar文件中的文件(使用
class.getResourceAsStream()
)。

我知道回答这个问题有点晚了,但几天前我在可运行jar中遇到了这个问题,我这样解决了这个问题:

java-Djava.util.logging.config.file=logging.properties-cp test.jar com.sample.test.Main

其中test.jar是jar的名称,com.sample.test.Main是主类的完全限定名