logback配置错误日志发送邮件

这个问题整整弄了2天才真正实现了,网上各种搜索,各种坑,今天特地闲下来,记下笔记,希望可以帮助到需要的人。

需求:

1、报错发邮件,定位错误位置以尽快解决;(报错发送邮件)

2、某一项重要操作完成之后发送邮件;(自定义发送邮件)

没有接触过logback,怎么办?

没办法,硬着头皮上吧。先搞需求1网上查了一波,按照说的一步一步走下来,竟然可以发送了 (意料之中)

首先加入logback需要的jar 这里使用maven


<dependency>
  <groupId>org.slf4jgroupId>
  <artifactId>slf4j-apiartifactId>
dependency>
<dependency>
  <groupId>ch.qos.logbackgroupId>
  <artifactId>logback-coreartifactId>
dependency>
<dependency>
  <groupId>ch.qos.logbackgroupId>
  <artifactId>logback-classicartifactId>
dependency>


<dependency>
  <groupId>javax.mailgroupId>
  <artifactId>mailartifactId>
  <version>1.4.7version>
dependency>
<dependency>
  <groupId>org.codehaus.janinogroupId>
  <artifactId>janinoartifactId>
  <version>2.7.8version>
dependency>

网上找个logback.xml,加入以下内容,参数对应填入

 
    
    <property name="smtpHost" value="127.0.0.1"/>
    
    <property name="smtpPort" value="25"/>
    
    <property name="username" value="[email protected]"/>
    
    <property name="password" value="xxx"/>
    
    <property name="SSL" value="false"/>
    
    <property name="email_to" value="[email protected],[email protected]"/>
    
    <property name="email_from" value="logmonitor" />
    
    <property name="email_subject" value="【Error】: %logger" />
    
    <appender name="EMAIL" class="ch.qos.logback.classic.net.SMTPAppender">
        <smtpHost>${smtpHost}smtpHost>
        <smtpPort>${smtpPort}smtpPort>
        <username>${username}username>
        <password>${password}password>
        <asynchronousSending>trueasynchronousSending>
        <SSL>${SSL}SSL>
        <to>${email_to}to>
        <from>${email_from}from>
        <subject>${email_subject}subject>
     
        <layout class="ch.qos.logback.classic.html.HTMLLayout">
            <Pattern>%date%level%thread%logger{0}%line%messagePattern>
        layout>
     
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>ERRORlevel>
            <onMatch>ACCEPTonMatch>
            <onMismatch>DENYonMismatch>
        filter>
        <cyclicBufferTracker class="ch.qos.logback.core.spi.CyclicBufferTracker">
            
            <bufferSize>1bufferSize>
        cyclicBufferTracker>
    appender>
    <root level="info">
        <appender-ref ref="EMAIL"/>
    root>

这种配置执行下面代码将会发送邮件!

logger.error("邮件内容");

如果需要直接报错发送邮件的,只需更改如下代码即可

复制代码
<filter class="ch.qos.logback.core.filter.EvaluatorFilter">    
    <evaluator class="ch.qos.logback.classic.boolex.JaninoEventEvaluator">  
        <expression>  
              
            if(level >= WARN && null != throwable) {  
                return true;  
            }  
            return false;  
        expression>    
    evaluator>    
    <onMatch>ACCEPTonMatch>    
    <onMismatch>DENYonMismatch>      
filter> 
而我个人更倾向于logger.error("邮件内容"); 原因很简单,规范的代码都有异常处理机制,处理时加入相应的参数发送报错信息,清晰明了!

需求2:

复制代码
<appender name="EMAILTO" class="ch.qos.logback.classic.net.SMTPAppender">
        <smtpHost>${smtpHost}smtpHost>
        <smtpPort>${smtpPort}smtpPort>
        <username>${username}username>
        <password>${password}password>
        <asynchronousSending>trueasynchronousSending>
        <SSL>${SSL}SSL>
        <to>${email_to}to>
        <from>${email_from}from>
        <subject>${email_subject}subject>
        <layout class="ch.qos.logback.classic.html.HTMLLayout">
            <Pattern>%date%level%thread%logger{0}%line%messagePattern>
        layout>
        
        <evaluator class="ch.qos.logback.classic.boolex.OnMarkerEvaluator">
            <marker>DONEmarker>
        evaluator>
        <cyclicBufferTracker class="ch.qos.logback.core.spi.CyclicBufferTracker">
            
            <bufferSize>1bufferSize>
        cyclicBufferTracker>
    appender>
<root level="info">
        <appender-ref ref="EMAILTO"/>
root>
复制代码

 

基于标记的发送邮件任何级别都可以发送,也可以定制级别,这里没有加入级别就不做演示了

基于标记的自定义发送邮件,加入一下代码即可:

 logger.info(MarkerFactory.getMarker("DONE"),"邮件内容");

红色内容和上面标签内的一致即可

效果如下:

logback配置错误日志发送邮件_第1张图片

到目前为止 ,logback发送邮件结束,我也希望这篇对大家工作上有一点点帮助的话 请点击下面的点赞,谢谢啦!


 
  


你可能感兴趣的:(logback,错误发送邮件)