gpt4 book ai didi

java 1.8.0_192 的 JavaFX 日志记录

转载 作者:行者123 更新时间:2023-12-02 10:37:41 32 4
gpt4 key购买 nike

我想最大化 JavaFX 的日志记录。

我发现并将其设置为 JVM 的标志:-Djavafx.pulseLogger=true(产生大量信息)

我正在尝试使用 log4j:

下面的选项有效吗?他们似乎没有在我的输出文件中产生任何内容?

<logger name="com.sun.javafx">
<level value="info" />
</logger>

<logger name="javafx">
<level value="info" />
</logger>

最佳答案

JavaFX 与所有 Java SE 一样,不使用 Log4J,而是使用 Java logging system 。 Log4J配置不会影响JavaFX的日志记录。

您可以使用LogManager.getLogManager()。 updateConfiguration使用覆盖日志配置读取属性文件:

try (InputStream loggingProperties =
MyApplication.class.getResource("logging.properties")) {

LogManager.getLogManager().updateConfiguration(loggingProperties);
}

(请注意,readConfiguration 会替换整个日志记录配置,而 updateConfiguration 会修改您对配置的自定义设置。)

如果您只想更改 JavaFX 的日志记录,您可以这样做:

private static final Logger javafxLogger = Logger.getLogger("javafx");
static {
javafxLogger.setLevel(Level.FINEST);
}

记录器需要保留在一个字段中,否则它将被垃圾收集(快速)并且自定义将会丢失。

无论您使用上述哪种方法,设置 Logger 的级别都是不够的。 Handlers也有自己的级别,默认情况下它们也设置为 Level.INFO。

解决这个问题的最简单方法是设置所有处理程序的级别:

for (Handler handler : Logger.getLogger("").getHandlers()) {
handler.setLevel(Level.ALL);
}

关于java 1.8.0_192 的 JavaFX 日志记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53158134/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com