我想最大化 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/