我试图提供一个记录器文件的输出,但我发现输出文件中只显示了一行-仅在try catch块内的那一行,其他仅在控制台上
在此处附上我的测试代码
public class Something {
Logger logger = Logger.getLogger("");
FileHandler fh;
@BeforeEach
public void wallad() {
System.out.println("hello");
}
@AfterEach
public void asddf() {
System.out.println("pizza");
}
@Tag("test")
@Test
public void some() {
try {
fh = new FileHandler("C:\\MyLogFile.txt");
logger.addHandler(fh);
SimpleFormatter formatter = new SimpleFormatter();
fh.setFormatter(formatter);
logger.log(Level.SEVERE, "severe");------->only these
will show at the output file
}
catch (Exception e) {
e.printStackTrace();
}
logger = Logger.getLogger(Logger.class.getName());
logger.setLevel(Level.FINEST);
ConsoleHandler handler = new ConsoleHandler();
handler.setLevel(Level.ALL);
logger.addHandler(handler);
logger.setUseParentHandlers(false);
System.out.println("test1");
logger.log(Level.WARNING, "warning");
System.out.println("test2");
logger.log(Level.INFO, "information");
System.out.println("test3");
logger.log(Level.SEVERE, "severe");
System.out.println("test4");
logger.log(Level.FINEST, "finest");
System.out.println("test5");
logger.log(Level.FINE, "fine");
System.out.println("test6");
logger.log(Level.FINER, "finer");
System.out.println("test7");
logger.log(Level.FINEST, "finest");
}
}
我如何取出所有日志文件?根本不需要将它放在try catch块中
答案 0 :(得分:0)
通过将处理程序设置为ConsoleHandler,您将不再写入文件
ConsoleHandler handler = new ConsoleHandler();
删除此行以继续写入文件
logger = Logger.getLogger(Logger.class.getName());
答案 1 :(得分:0)
您正在使用ConsoleHandler
创建一个新的ConsoleHandler handler = new ConsoleHandler();
,这很好。您还正在呼叫logger.addHandler(handler)
,它将将此ConsoleHandler
添加到记录器中。
如果不是因为您只是用以下方法重新初始化了FileHandler
变量,则该将也有一个logger
:
logger = Logger.getLogger(Logger.class.getName());
只需删除此行,您的logger
将同时具有FileHandler
和ConsoleHandler
。