为什么仅当我将日志添加到try块时,我才能在输出文件中看到它?

时间:2019-01-17 20:26:18

标签: java logging

我试图提供一个记录器文件的输出,但我发现输出文件中只显示了一行-仅在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块中

2 个答案:

答案 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将同时具有FileHandlerConsoleHandler