java 1.8.0_192 的 JavaFX 日志记录
JavaFX logging for java 1.8.0_192
我想最大化来自 JavaFX 的日志记录。
我找到并将其设置为 JVM 的标志:
-Djavafx.pulseLogger=真
(产生大量信息)
我正在尝试使用 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 需要保留在一个字段中,否则将被垃圾收集(快速)并且自定义将丢失。
无论您使用上述哪种方法,仅设置Logger 的级别是不够的。 Handlers 也有自己的级别,默认设置为 Level.INFO。
解决此问题的最简单方法是设置所有处理程序的级别:
for (Handler handler : Logger.getLogger("").getHandlers()) {
handler.setLevel(Level.ALL);
}
感谢上面 VGR 的回答,这就是我在详细级别上让 javafx 注销所做的工作:
private static final java.util.logging.Logger javafxLogger =
java.util.logging.Logger.getLogger("javafx");
javafxLogger.setLevel(Level.FINEST);
FileHandler fh = new FileHandler("MyJavaFX.log", (1048576 * 30), 1000);
fh.setFormatter(new SimpleFormatter());
javafxLogger.addHandler(fh);
我想最大化来自 JavaFX 的日志记录。
我找到并将其设置为 JVM 的标志: -Djavafx.pulseLogger=真 (产生大量信息)
我正在尝试使用 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 需要保留在一个字段中,否则将被垃圾收集(快速)并且自定义将丢失。
无论您使用上述哪种方法,仅设置Logger 的级别是不够的。 Handlers 也有自己的级别,默认设置为 Level.INFO。
解决此问题的最简单方法是设置所有处理程序的级别:
for (Handler handler : Logger.getLogger("").getHandlers()) {
handler.setLevel(Level.ALL);
}
感谢上面 VGR 的回答,这就是我在详细级别上让 javafx 注销所做的工作:
private static final java.util.logging.Logger javafxLogger =
java.util.logging.Logger.getLogger("javafx");
javafxLogger.setLevel(Level.FINEST);
FileHandler fh = new FileHandler("MyJavaFX.log", (1048576 * 30), 1000);
fh.setFormatter(new SimpleFormatter());
javafxLogger.addHandler(fh);