我有一个小的JavaFX应用程序,不想使用 java.util.logging 。我已将所需信息记录到Level.INFO(当前可见)和Level.FINE(当前不可见)级别。当我尝试通过Intellij Idea编译项目时,我在控制台中看到了Level.INFO日志。
代码示例。
public class Main extends Application {
private static final Logger logger = Logger.getLogger(Main.class.getName());
@Override
public void start(Stage primaryStage) throws Exception {
logger.log(Level.INFO, "App started. Message's visible");
logger.log(Level.FINE, "Message's not visible");
}
}
如何更改控制台默认的可见级别,而无需为 Handler 代码的每个记录器行编写代码?也许在root中有一些配置文件?
日志以grwww answer here的风格编写,但没有任何关于改变可见级别的内容。
答案 0 :(得分:0)
阅读Oracle的Java Logging Overview。
在代码中配置记录器内联
import javafx.application.Application;
import javafx.stage.Stage;
import java.util.logging.*;
public class Main extends Application {
private static final Logger logger = Logger.getLogger(Main.class.getName());
@Override
public void start(Stage primaryStage) throws Exception {
logger.log(Level.INFO, "App started. Message's visible");
logger.log(Level.FINE, "Message's not visible");
}
public static void main(String[] args) {
logger.setLevel(Level.FINE);
Handler consoleHandler = new ConsoleHandler();
consoleHandler.setLevel(Level.FINE);
logger.addHandler(consoleHandler);
launch(args);
}
}
请注意,该级别是在 记录器和处理程序上配置的。
有关如何执行此操作的信息来自:
使用文件或类配置记录器
请注意,我在上面提供的示例是针对基于内联代码的方法。还可以使用日志记录配置类或外部文件(或类路径资源)定义日志记录配置。要执行此操作,请参阅先前链接的LogManager文档和Java日志概述。
LogManager定义了两个可选的系统属性,允许控制初始配置:
- " java.util.logging.config.class"
- " java.util.logging.config.file"
这两个属性可以在" java"的命令行中指定。命令。
如果" java.util.logging.config.class"属性设置,然后 属性值被视为类名。给定的课程将是 加载,将实例化一个对象,以及该对象的构造函数 负责读取初始配置。 (那个对象 可以使用其他系统属性来控制其配置。) 备用配置类可以使用readConfiguration(InputStream) 在LogManager中定义属性。
如果" java.util.logging.config.class"财产没有设定,那么 " java.util.logging.config.file"系统属性可用于指定 属性文件(java.util.Properties格式)。最初的 将从此文件中读取日志记录配置。
如果没有定义这些属性,则LogManager使用它 默认配置。通常会加载默认配置 来自属性文件" lib / logging.properties"在Java中 安装目录。