这就是我要做的事情:
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
为空。为什么呢?
答案 0 :(得分:0)
如果格式化了记录,StreamHandler只会写格式化程序“head”。有条件地,如果处理程序关闭,则会写入“head”和“tail”。所有这些似乎都表明StreamHandler没有使用LogRecord。 SimpleFormatter对头部和尾部都使用空字符串,因此无法帮助进行故障排除。