java 1.8.0_192 的 JavaFX 日志记录

标签 java logging javafx log4j

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

相关文章:

java - Java删除指定子字符串

java - IFX 标准 Java 实现

JavaFX-8 使文本插入符号在只读文本区域中可见

JavaFX Medusa Gauges 显示阈值 TileKpiSkin

c++ - Pantheios 登录 C++ DLL

java - 新场景启动后代码如何执行

java - JEdi​​torPane - 没有 HEIGHT 参数的 IMG 标签

JavaFX TreeTableView 图像工件

Python 日志记录 API 打印文件名为 `<string>`

用于记录 POST 原始数据的 PHP 脚本