一、说明
当检测到错误日志时,可能需要进行短信通知功能。使用SMTPAppender可以实现:当出现ERROR级别的日志时发送到邮箱。此处使用了两个qq邮箱模拟了邮件的发送方和接收方,但需要邮箱开通SMTP服务。
二、开通SMTP服务
1.电脑登录邮箱,设置-账户 ,找到POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务,然后选择开通POP3/SMTP服务(发送服务端) 和IMAP/SMTP服务(接收端),如下图
注意:开通SMTP时,要把发送者邮箱那一串密码保存一下(我的是ajeejjfgpdasbagh),Xml中会用到。
三、案例
1.Xml配置
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="warn">
<Appenders>
<!--这个输出控制台的配置 -->
<Console name="Console" target="SYSTEM_OUT">
<ThresholdFilter level="trace" onMatch="ACCEPT"
onMismatch="DENY" />
<PatternLayout pattern="%d %p [%c{1}:%L] %m%n" />
</Console>
<SMTP name="Mail" subject="Error Log" to="17909xxxxx@qq.com" from="132528xxxx@qq.com"
replyTo="132528xxxx@qq.com" smtpProtocol="smtp" smtpHost="smtp.qq.com"
smtpPort="25" bufferSize="50" smtpDebug="false" smtpPassword="ajeejjfgpdasbagh"
smtpUsername="132528xxxx@qq.com">
<PatternLayout pattern="%d %p [%c{1}:%L] %m%n" />
</SMTP>
</Appenders>
<Loggers>
<Root level="error">
<AppenderRef ref="Mail" />
<AppenderRef ref="Console" />
</Root>
</Loggers>
</Configuration>
说明:
<Root level="error">设置告警级别为ERROR时候发送邮件
发送者邮箱为:132528xxxx@qq.com
接收者邮箱为:17909xxxxx@qq.com
服务器host:
接收邮件服务器:imap.qq.com
发送邮件服务器:smtp.qq.com
smtpHost:发送邮件服务器(smtp.qq.com)
smtpPort:通信端口号(25)
smtpPassword:发送者的密码,开启SMTP时的那一串密码
-
测试代码
public class TestSocketAppend { static Logger log = LogManager.getLogger(TestSocketAppend.class); public static void main(String[] args) { String str = "when life is a hard game dont you blame!!when life is a hard game dont you blame!!"; int num=0; while (true) { log.info(str); log.info(str); System.out.println(11); log.error(str); try { Thread.sleep(100); } catch (InterruptedException e) { e.printStackTrace(); } } } }
3.需要额外导入mail.jar和activation.jar
https://download.csdn.net/download/qq_28091033/10799735