com.sun。*软件包使用PrintStream进行日志记录。例如com.sun.mail.smtp.SMTPTransport类

private PrintStream out;
...
if (debug)
        out.println("DEBUG SMTP: useEhlo " + useEhlo + ", useAuth " + useAuth);


这有可能用log4j记录这些事件吗?一种解决方案是为系统输出创建代理,如下所示:log4j redirect stdout to DailyRollingFileAppender,但是问题是,将记录所有使用PrintStream的事件,不仅是com.sun.mail。*包,而且我不能仅从com.sun。*程序包登录。

例如,我想将电子邮件事件记录到单独的文件中,但不能这样做,因为使用PrintStream的某些第三方库中存在其他类的可能性。

最佳答案

JavaMail 1.4.7或更高版本使用JDK logging以及对打印流的旧式支持。 Log4j JUL Adapter可用于捕获JavaMail的输出。 JavaMail API在每个JavaMail软件包的底部记录JDK记录器的名称。

10-04 11:08
查看更多