java - 如何使日志仅在文件上打印而不在控制台上打印?
问题描述
虽然我已经将处理程序配置为将日志写入文件结构,但是当我运行程序时我会在控制台栏上获取日志,我该如何伪装日志以便它只会写入文件而不暴露给控制台。
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);
无效 java.util.logging.Logger.setUseParentHandlers(布尔 useParentHandlers)
指定此记录器是否应将其输出发送到其父记录器。这意味着任何 LogRecords 也将被写入父级的处理程序,并可能写入其父级,递归地向上命名空间。
参数:useParentHandlers 如果要将输出发送到记录器的父级,则为 true。
如果 ConsoleHandler 已明确添加到记录器,则上述内容不适用于您的用例,例如logger.addHandler(new ConsoleHandler());
在这种情况下,您可以根据需要通过以下方式删除该处理程序logger.removeHandler(<handlerToBeRemoved>)
希望有帮助!干杯
推荐阅读
- python - 将我的数组中的值转换为 INT
- python - 使用熊猫数据框中的不同参考行比较数值
- django - Django获取刚刚创建的对象,但没有返回任何内容
- r - Caret GBM 中的模型拟合失败,并且缺少所有 RMSE 度量值:
- r - 在 R 中创建从 00 开始的 5 分钟间隔
- python - 导入 Keras 顺序模型时出错
- database - PL/SQL ORA-29280: 无效的目录路径和 ORA-06512: 在 oracle 11g 中的“SYS.UTL_FILE”
- python - 如何在 Django 中添加默认不支持的语言?
- python - 如何检查是否在 tkinter 上单击了按钮
- c# - 将 String 转换为 String[] 但在撇号中不使用逗号