关闭

Maven项目之错误日志发邮件通知

标签: logger发邮件错误日志mavenlogback
156人阅读 评论(0) 收藏 举报
分类:

1、主要通过logback.xml配置,该文件位于src/main/resource目录下

<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="false">

    <property name="fileName" value="xunming-scheduler"/>

    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %logger{50} - %msg%n</pattern>
        </encoder>
    </appender>

    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %logger{50} - %msg%n</pattern>
            <charset>UTF-8</charset>
        </encoder>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>logs\\${fileName}.%d{yyyy-MM-dd}.log</fileNamePattern>
            <maxHistory>365</maxHistory>
        </rollingPolicy>
    </appender>

    <!--  邮件 -->
    <!-- SMTP server的地址,必需指定。如网易的SMTP服务器地址是: smtp.163.com 、 smtp.126.com-->
    <property name="smtpHost" value="smtp.exmail.qq.com"/><!--填入要发送邮件的smtp服务器地址-->
    <!-- SMTP server的端口地址。默认值:25 -->
    <property name="smtpPort" value="25"/>
    <!-- 发送邮件账号,默认为null -->
    <property name="username" value="xmliu@xunming.com"/><!--发件人账号 xmliu@126.com-->
    <!-- 发送邮件密码,默认为null -->
    <property name="password" value="123456"/><!--发件人密码 123456-->
    <!-- 如果设置为true,appender将会使用SSL连接到日志服务器。默认值:false -->
    <property name="SSL" value="false"/>
    <!-- 指定发送到那个邮箱,可设置多个<to>属性,指定多个目的邮箱 -->
    <property name="email_to" value="xmliu@163.com"/><!--收件人账号多个可以逗号隔开-->
    <!-- 指定发件人名称。如果设置成“&lt;ADMIN&gt; ”,则邮件发件人将会是“<ADMIN> ” -->
    <property name="email_from" value="xmliu@xunming.com" />
    <!-- 指定emial的标题,它需要满足PatternLayout中的格式要求。如果设置成“Log: %logger - %msg ”,就案例来讲,则发送邮件时,标题为“【Error】: com.foo.Bar - Hello World ”。 默认值:"%logger{20} - %m". -->
    <property name="email_subject" value="【Error】: %logger - %msg " />
    <!-- ERROR邮件发送 asynchronousSending配置属性-->
    <appender name="EMAIL" class="ch.qos.logback.classic.net.SMTPAppender">
        <smtpHost>${smtpHost}</smtpHost>
        <smtpPort>${smtpPort}</smtpPort>
        <username>${username}</username>
        <password>${password}</password>
        <asynchronousSending>true</asynchronousSending>
        <SSL>${SSL}</SSL>
        <to>${email_to}</to>
        <from>${email_from}</from>
        <subject>${email_subject}</subject>
             <!-- html格式-->
        <layout class="ch.qos.logback.classic.html.HTMLLayout">
            <Pattern>%date%level%thread%logger{0}%line%message</Pattern>
        </layout>
             <!-- 这里采用等级过滤器 指定等级相符才发送 -->
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>ERROR</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
        <cyclicBufferTracker class="ch.qos.logback.core.spi.CyclicBufferTracker">
            <!-- 每个电子邮件只发送一个日志条目 经测试改变这个数字并不能将多个日志发在一个邮箱里 -->
            <bufferSize>1</bufferSize>
        </cyclicBufferTracker>
    </appender>

    <!--<filter class="ch.qos.logback.classic.filter.ThresholdFilter">-->
        <!--<level>ERROR</level>-->
        <!--<onMatch>NEUTRAL</onMatch>-->
        <!--<onMismatch>NEUTRAL</onMismatch>-->
    <!--</filter>-->

    <!--<logger level="INFO" name="com.xmliu"/>-->

    <root level="INFO">
        <appender-ref ref="STDOUT"/>
        <appender-ref ref="FILE"/>
        <appender-ref ref="EMAIL"/>
    </root>

</configuration>

2、pom.xml中添加如下依赖


        <dependency>
            <groupId>org.codehaus.janino</groupId>
            <artifactId>janino</artifactId>
            <version>2.7.8</version>
        </dependency>
        <!-- logback相关 -->
        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-core</artifactId>
            <version>1.1.7</version>
        </dependency>
        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-classic</artifactId>
            <version>1.1.7</version>
        </dependency>
        <!-- 发邮件 -->
        <dependency>
            <groupId>javax.mail</groupId>
            <artifactId>mail</artifactId>
            <version>1.4.7</version>
        </dependency>
        <!-- logger.info("具体使用") -->
         <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>jcl-over-slf4j</artifactId>
            <version>${slf4j.version}</version>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>${slf4j.version}</version>
        </dependency>

3、正常版使用方法

Logger logger = LoggerFactory.getLogger(XmScheduler.class);
public void doAnything(){
    logger.error("邮件发送");
}

4、还有一种情况是根据指定的marker来发送邮件,那么logback.xml需要添加如下配置

<!-- 基于标记的发送邮件 如有多个标记加入多个<maker></maker>标签即可 -->
        <evaluator class="ch.qos.logback.classic.boolex.OnMarkerEvaluator">
            <marker>Wei</marker>
        </evaluator>

5、标记版使用方法

 logger.info(MarkerFactory.getMarker("Wei"),"具体邮件内容");

6、实测,正常版效果图,标记版类似就不上图了

这里写图片描述

参考博文:

logback 发送邮件和自定义发送邮件;java类发送邮件

0
0
查看评论

通过log4j实现发送错误信息的邮件功能

通过log4j实现发送错误信息的邮件功能 1.使用的场景            当你的项目是要部署到服务器上时,因为程序员没办法 无时无刻的盯着 tomacat的log日志去看,所以我们需要一种当出现错误信息的可以主动提醒我们的方...
  • qq_34359363
  • qq_34359363
  • 2016-11-04 11:17
  • 942

Web项目中诡异的java.lang.ClassNotFoundException: ch.qos.lorgback.classic.PatternLayout问题解决

引言: 诡异而少见的java.lang.ClassNotFoundException: ch.qos.lorgback.classic.PatternLayout异常错误信息,在启动的时候,出现了异常,哪里出了问题呢?
  • blueheart20
  • blueheart20
  • 2015-04-28 10:17
  • 23885

解决java.lang.NoClassDefFoundError: ch/qos/logback/core/joran/spi/Pattern

今天在公司写代码的时候碰到了一个问题,启动应用报错:java.lang.NoClassDefFoundError: ch/qos/logback/core/joran/spi/Pattern。 相信很多人碰到过这个问题,分享一下我自己的解决过程,仅供参考。 (1)百度上查了一下这个错误,没查到实...
  • yinzn2011
  • yinzn2011
  • 2016-03-07 21:13
  • 16458

java单测 ch.qos.logback.core.joran.spi.JoranException: Parser configuration error occurred

ch.qos.logback.core.joran.spi.JoranException: Parser configuration error occurred
  • nmgzywd
  • nmgzywd
  • 2017-01-12 11:12
  • 2729

mybatis hello world

在当今这个世界什么最值钱,毫无疑问是数据。对于数据一般储存在数据库中,所以对于Java企业级开发,连接数据库就显得很重要了。对于J2EE规范中,JDBC(Java Data Base Connectivity,java数据库连接)相信大家不会陌生。而对于编写过JDBC的朋友,相信对于它冗余重复的操作...
  • u012410733
  • u012410733
  • 2017-04-01 00:08
  • 458

OpenNMS---邮件通知配置笔记--开源监控软件

OpenNMS邮件通知配置     打开通知功能:Admin页面中Operations下放的Notification Status 选项设置为On,点击Update。     1.邮件服务器的配置:        ...
  • guwenwu285
  • guwenwu285
  • 2012-07-28 22:06
  • 845

linux写一个监控日志,发邮件的shell

back_day=`date -d '1 day ago' +%Y-%m-%d` finance_linux_log_user=/home/admin/output/logs/user TARGET_SERVER="crmfinance1 crmfinance2 crm...
  • bxyz1203
  • bxyz1203
  • 2010-08-10 14:58
  • 2823

logback demo

(marker != null) &amp;&amp;         (marker.contains("DEV") || marker.contains("TRANSACTION_FAILURE"))...
  • jintianhen1
  • jintianhen1
  • 2015-12-26 17:23
  • 598

logback学习与使用(四)

logback配置文件的自动加载与手动加载 编写完log
  • u010311267
  • u010311267
  • 2014-10-20 20:03
  • 535

log4net 发送错误日志到邮箱配置

Log4net支持多种级别的日志。优先级从高到低依次排列如下:             FATAL > ERROR > WARN > INFO > DEBUG -->
  • u011010558
  • u011010558
  • 2013-12-12 18:38
  • 1316
    个人资料
    • 访问:177218次
    • 积分:2801
    • 等级:
    • 排名:第15119名
    • 原创:58篇
    • 转载:5篇
    • 译文:0篇
    • 评论:52条
    联系我吧
    我的App
    博客专栏
    文章分类