如何将javamail中的debug日志输出到应用的日志框架中

    在使用javamail的时候,有时我们会打开debug,让javamail输出debug日志。但是,javamail默认是输出到System.out中,如果应用使用的是log4j或logback之类的日志框架,如何将javamail的debug日志也统一由这些日志框架来处理呢?

    javamail中,日志是使用PrintStream来输出的,默认的实现是输出到System.out,如果想自行实现PrintStream类,就可以自己决定日志输出到哪里了。javamail使用到了PrintStream的println(String line)方法和wrinte(byte[] bs,int off,int len)方法,所以我们定义一个Log4JavaMail类继承PrintStream,重写这两个方法。代码地址为:    https://github.com/goodjin/log4javamail.git

    使用方式如下:    

Log4JavaMail log4JavaMail = new Log4JavaMail(logger, "utf-8");//logger为slf4j的日志对象
Session session = Session.getInstance(props, null); // 获得邮件会话对象
session.setDebugOut(log4JavaMail); //设置将日志输出到工具类对象
session.setDebug(true);

    在debug时每次都全部输出整个邮件内容可能会导致日志过多,也无必要,所以我们可以将邮件内容设置为trace级别,这里的做法是在遇到DATA命令时标记当前日志为邮件内容开始,遇到.\r\n时标记为邮件内容结束 ,当输出邮件内容时采用trace方法。

     最后:这里只针对smtp发信做了日志桥接,pop3,imap协议下的做法同理。

转载于:https://my.oschina.net/u/150599/blog/885614

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值