JAVAutil。日志记录:当从Windows comand prompt运行时,处理程序的输出到哪里?
刚刚开始学习这个日志模块
当我在Eclipse中运行它时,控制台的输出会转到我期望的地方:控制台处理程序到控制台,文件处理程序到文件
当我在命令提示符下运行时,我不知道控制台输出或文件输出要去哪里
我是这样配置它的:
Handler consoleHandler = null;
Handler fileHandler = null;
try {
logger.setUseParentHandlers(false);
// Creating consoleHandler and fileHandler
consoleHandler = new DualConsoleHandler();
// 1000 bytes max, 5 files max, append mode = true
fileHandler = new FileHandler("./output/logging/log%g.xml", 10000, 5, true);
// Assigning handlers to logger object
logger.addHandler(consoleHandler);
logger.addHandler(fileHandler);
// Setting levels to handlers and logger
consoleHandler.setLevel(Level.ALL);
fileHandler.setLevel(Level.ALL);
logger.setLevel(Level.ALL);
} catch (IOException exception) {
logger.log(Level.SEVERE, "Error occur in FileHandler.", exception);
}
DualConsoleHandler
看起来像这样(在另一个SO问题中发现),其思想是将信息或更低的值打印到stdout,但将警告或更高的值打印到stderr:
public class DualConsoleHandler extends StreamHandler {
private final ConsoleHandler stderrHandler = new ConsoleHandler();
public DualConsoleHandler() {
super(System.out, new SimpleFormatter());
}
@Override
public void publish(LogRecord record) {
if (record.getLevel().intValue() <= Level.INFO.intValue()) {
super.publish(record);
super.flush();
} else {
stderrHandler.publish(record);
stderrHandler.flush();
}
}
}
# 1 楼答案
控制台输出发送到控制台
文件输出将转到您指定的路径。i、 e.
./output/logging/log%g.xml
在运行它的目录下查找
output/logging
目录