我如何setDebug(true)
在 JavaMail 会话中捕获流并在我的日志框架中使用它?(缺少下载源,更改方法以接受流作为参数,重新编译它,...)
更一般地说,Java 中是否有一种以这种方式“劫持和重定向”通用流输出的标准方法?请注意, System.out 可能已经被其他输出污染了,我不知道如何“过滤”...
我如何setDebug(true)
在 JavaMail 会话中捕获流并在我的日志框架中使用它?(缺少下载源,更改方法以接受流作为参数,重新编译它,...)
更一般地说,Java 中是否有一种以这种方式“劫持和重定向”通用流输出的标准方法?请注意, System.out 可能已经被其他输出污染了,我不知道如何“过滤”...
您可以将 PrintStream 链接到 ByteArrayOutputStream,告诉 JavaMail 使用您的 PrintStream,执行 JavaMail 的工作,最后将 ByteArrayOutputStream 的内容转储到您最喜欢的记录器。
ByteArrayOutputStream os = new ByteArrayOutputStream();
PrintStream ps = new PrintStream(os);
Session mailSession = Session.getDefaultInstance(props, null);
try {
if (MAIL_DEBUG) {
logger.info("JAVAMAIL debug mode is ON");
mailSession.setDebugOut(ps);
mailSession.setDebug(true);
}
...
transport.close();
if (MAIL_DEBUG) {
logger.info(os);
}
}
finally {
ps.close();
os.close();
}