gpt4 book ai didi

java - 如何在 java.util.logging 中使用自定义日志处理程序?

转载 作者:搜寻专家 更新时间:2023-11-01 03:55:41 25 4
gpt4 key购买 nike

这就是我想要做的:

Logger logger = LogManager.getLogManager().getLogger(Logger.GLOBAL_LOGGER_NAME);
ByteArrayOutputStream stream = new ByteArrayOutputStream();
Handler handler = new StreamHandler(stream, new SimpleFormatter());
logger.addHandler(handler);
org.slf4j.LoggerFactory.getLogger("com.example").info("foo");
logger.removeHandler(handler);
assert stream.toString().contains("foo");

它是 SLF4J 和 JUL 的混合体。 stream 在脚本末尾为空。为什么?

最佳答案

如果记录被格式化,StreamHandler 只会写入格式化程序“head”。如果处理程序关闭,则有条件地写入“head”和“tail”。所有这些似乎都表明没有 LogRecord 被 StreamHandler 使用。 SimpleFormatter 对头部和尾部都使用空字符串,因此无助于故障排除。

  1. 检查所有记录器、追加器和处理程序的级别/优先级,并确保它们设置正确。
  2. 使用 Logger.getLogger(Logger.GLOBAL_LOGGER_NAME) 而不是 LogManager。
  3. 使用 static final reference拿着你的记录器。
  4. 关闭您的处理程序。
  5. 使用 XMLFormatter 来帮助解决问题,因为它有头尾输出。
  6. 阅读slf4j + java.util.logging: how to configure?

关于java - 如何在 java.util.logging 中使用自定义日志处理程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7003381/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com