我是Java日志API的新手,需要一些帮助来解决这个问题:
在创建应用程序时,我的配置文件存储在项目根文件夹中,因此我使用-Djava.util.logging.config.file=logging.properties
开关来运行程序。
但后来我导出了可执行文件JAR。
如何配置日志记录?当我使用-D开关指定配置文件的路径时,它不起作用。
答案 0 :(得分:8)
您无法在MANIFEST.MF 文件中指定JVM参数,因此您必须在命令行或使用快捷方式指定日志记录属性:
java -Djava.util.logging.config.file=logging.properties -jar yourjar.jar
否则,您可以在JAR中打包属性文件(在您的情况下为logging.properties),然后读取 启动并将这些设置放入系统属性中。
答案 1 :(得分:3)
此外,LogManager使用两个可选的系统属性 允许更多地控制读取初始配置:
"java.util.logging.config.class" "java.util.logging.config.file"
这两个属性可以通过Preferences API或命令设置 行属性定义到“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()
)。
答案 2 :(得分:0)
我知道回答这个问题为时不晚,但是几天前我用可运行的jar遇到了这个问题,我就这样解决了:
java -Djava.util.logging.config.file=logging.properties -cp test.jar com.sample.test.Main
其中test.jar是jar的名称,com.sample.test.Main是您的主类的完全限定名称。