为什么 java.util.logging 没有将日志写入文件?
Why java.util.logging is not writing logs to file?
我已经为 class 准备了一个记录器。
代码如下:
public class MyClass {
FileHandler handler;
Logger logger;
// SINGLETON PATTERN
private static final MyClass SINGLE_INSTANCE = new MyClass();
private MyClass() {
try {
handler = new FileHandler("MyClass.log", false);
logger = Logger.getLogger(MyClass.class.getName());
handler.setLevel(Level.ALL);
logger.setLevel(Level.ALL);
} catch (IOException ioe) {
System.err.println("Initialization of logger threw");
ioe.printStackTrace();
throw new RuntimeException("Initialization of logger threw", ioe);
}
}
public static MyClass getInstance() {
return SINGLE_INSTANCE;
}
public void doStuff() {
Logger.getLogger(MyClass.class.getName()).log(Level.FINE, "Log Text");
}
}
为了启用 Level.FINE
的日志记录,我在 logger
和 handler
上都调用了方法 .setLevel
。但是当我执行代码并调用 doStuff()
时,日志中没有任何输出。
可能相关的注释:
- 文件存在,但大小为 0。
- 我正在使用 CONTROL+C 停止程序(它是一个控制台应用程序)。
添加处理程序
logger = Logger.getLogger(MyClass.class.getName());
logger.addHandler(handler);
我已经为 class 准备了一个记录器。 代码如下:
public class MyClass {
FileHandler handler;
Logger logger;
// SINGLETON PATTERN
private static final MyClass SINGLE_INSTANCE = new MyClass();
private MyClass() {
try {
handler = new FileHandler("MyClass.log", false);
logger = Logger.getLogger(MyClass.class.getName());
handler.setLevel(Level.ALL);
logger.setLevel(Level.ALL);
} catch (IOException ioe) {
System.err.println("Initialization of logger threw");
ioe.printStackTrace();
throw new RuntimeException("Initialization of logger threw", ioe);
}
}
public static MyClass getInstance() {
return SINGLE_INSTANCE;
}
public void doStuff() {
Logger.getLogger(MyClass.class.getName()).log(Level.FINE, "Log Text");
}
}
为了启用 Level.FINE
的日志记录,我在 logger
和 handler
上都调用了方法 .setLevel
。但是当我执行代码并调用 doStuff()
时,日志中没有任何输出。
可能相关的注释:
- 文件存在,但大小为 0。
- 我正在使用 CONTROL+C 停止程序(它是一个控制台应用程序)。
添加处理程序
logger = Logger.getLogger(MyClass.class.getName());
logger.addHandler(handler);