如何使日志仅在文件上打印而不在控制台上打印出来?

时间:2019-10-23 00:13:39

标签: java

尽管我已经配置了处理程序以将日志写入文件结构,但是在运行程序时我在控制台栏上看到了日志,但是我如何伪装日志,使其只写在文件上而不暴露在控制台上。 / p>

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());
    }
}

1 个答案:

答案 0 :(得分:0)

您可以尝试logger.setUseParentHandlers(false);

  

void java.util.logging.Logger.setUseParentHandlers(boolean useParentHandlers)

     

指定此记录器是否应将其输出发送到其父记录器。这意味着任何LogRecords也将递归地沿命名空间写入父级的处理程序,甚至可能写入父级的Handler。

     

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

如果已将ConsoleHandler明确添加到记录器中,则上述内容将不适用于您的用例。 logger.addHandler(new ConsoleHandler());,在这种情况下,您可以根据需要通过logger.removeHandler(<handlerToBeRemoved>)

删除该处理程序

希望有帮助!干杯