我正在使用java.util.logging
在不同级别执行日志记录。我的问题是我无法获得级别FINE
/ FINER
/ FINEST
来显示任何输出。我见过一个类似的线程(Why are the Level.FINE logging messages not showing?)但似乎并没有解决我的问题。我有以下主要课程:
package logtest;
import java.util.logging.Logger;
public class Main {
private static final Logger LOGGER = Logger.getLogger(Main.class.getName());
public static void main(String[] args) {
LOGGER.info("info");
LOGGER.severe("severe");
LOGGER.fine("fine");
}
}
在我的项目根目录中的文件src/logtest/Main.java
和文件logging.properties
中:
.handlers = java.util.logging.ConsoleHandler
java.util.logging.ConsoleHandler.level = FINE
java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter
我执行生成的二进制文件(在bin/logtest
中),如下所示:
java -Djava.util.logging.config.file=logging.properties -classpath bin logtest.Main
我得到了这个结果(注意到FINE
消息丢失了):
Aug 05, 2015 6:13:04 PM logtest.Main main
INFO: info
Aug 05, 2015 6:13:04 PM logtest.Main main
SEVERE: severe
有趣的是,如果我将条目java.util.logging.ConsoleHandler.level
更改为SEVERE
,则第一条消息会消失:
Aug 05, 2015 6:14:09 PM logtest.Main main
SEVERE: severe
所以我知道文件被正确读取和解释。但我无法将FINE
日志消息显示在控制台上(使用openjdk-8顺便说一句)。关于为什么的任何想法?
答案 0 :(得分:2)
您已更改处理程序的级别,但未更改记录器。你需要做两件事。
您可以在代码中执行此操作:
LOGGER.setLevel(Level.FINE);
或者,您可以从属性文件中读取设置。要修改默认日志记录级别,您可以添加:
.level=FINE
您可以通过添加
等行来指定自己的记录器的日志记录级别com.mycompany.myapp.level=FINE