Java 如何使日志只在文件上打印,而不在控制台上打印?

Java 如何使日志只在文件上打印,而不在控制台上打印?,java,Java,虽然我已经将处理程序配置为将日志写入文件结构,但当我运行程序时,我会在控制台栏上获取日志,我如何伪装日志,使其只在文件上写入,而不向控制台公开 static { System.setProperty("java.util.logging.config.file", "log.properties"); //must initialize loggers after setting above property } static Logger logger

虽然我已经将处理程序配置为将日志写入文件结构,但当我运行程序时,我会在控制台栏上获取日志,我如何伪装日志,使其只在文件上写入,而不向控制台公开

static {
    System.setProperty("java.util.logging.config.file",
            "log.properties");
    //must initialize loggers after setting above property
}
static Logger logger = Logger.getLogger("com.debugz");
public static void main(String[] args) {
try  {
        FileHandler h = new FileHandler("%h/file_%g.log",1,4);
        h.setFormatter(new SimpleFormatter());
        logger.addHandler(h);
        logger.log(Level.INFO,"Hello");

    }
    catch (Exception error){
        System.out.println("Error : "+error.getMessage());
    }
}

您可以尝试
logger.setUseParentHandlers(false)

指定此记录器是否应将其输出发送到其父记录器。这意味着,任何日志记录也将以递归方式写入父级的处理程序,并可能写入其父级的命名空间

参数:如果要将输出发送到记录器的父级,则useParentHandlers为true

如果已明确地将ConsoleHandler添加到记录器中(例如,
logger.addHandler(new ConsoleHandler()),则上述操作不适用于您的用例
在这种情况下,如果需要,您可以通过
logger.removeHandler()


希望有帮助!干杯

但是,如果我从记录器中删除处理程序,我如何将日志消息传递到FileHandler中,尽管您不必删除FileHandler。如果您想明确地删除另一种处理程序(例如ConsoleHandler),那么这只是一个示例