logback

一、介绍

logback是由log4j的作者开发的一个开源日志组件,用以替代log4j。

logback由3个部分组成:

♦ logback-core (基础模块)

♦ logback-classic (log4j改进版,实现slf4j)

♦ logback-access (与servlet交互的模块,提供通过Http来访问日志的功能)

二、logback对比log4j

1. 性能

logback重写内核,性能提升,内存加载小。

2. 充分测试

以年为单位的测试时间。

3. logback-classic原生实现slf4j

log4j还需要一个中间转换层。

4. 文档内容丰富

官网200pages+。

5.  XML配置文件热加载

logback-classic能自动重新加载配置文件。

6. 从I/O错误中优雅恢复

RollingFileAppender能够非常友好地从I/O异常中恢复。

7. 自动删除日志归档

可以控制日志文件的最大数量或超时删除时间。

8. 自动压缩日至归档

自动压缩已经打出来的日志文件,压缩过程应用不受影响。

9. 配置文件适应不同环境

加入条件判断,区分开发,测试,生产。

10. SiftingAppender

可筛选Appender。

11. 异常栈信息带有包信息

打堆栈树日志时,有包的信息。

三、logback依赖jar

♦ slf4j-api

♦ logback-core

♦ logback-classic

<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.9</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-core</artifactId>
<version>1.0.13</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.1.3</version>
</dependency>

logback-mail

一、发送邮件依赖jar

♦ mail

♦ janino

<dependency>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
<version>1.4.4</version>
</dependency>
<dependency>
<groupId>org.codehaus.janino</groupId>
<artifactId>janino</artifactId>
<version>2.7.8</version>
</dependency>

二、配置logback.xml

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<!-- 控制台输出 -->
<appender name="Console" class="ch.qos.logback.core.ConsoleAppender">
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>DEBUG</level>
</filter>
<encoder>
<!-- 格式化输出:%date(d%)表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度, -->
<!-- %logger{36}表示logger名字最长36个字符,否则按照句点分割,%msg:日志消息,%n是换行符 -->
<pattern>%date{MM:dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender> <!-- 输出DEBUG级别日志文件的appender -->
<appender name="RollingFileRun" class="ch.qos.logback.core.rolling.RollingFileAppender">
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>DEBUG</level>
</filter>
<File>/data/tomcat/runtime/debug.log</File>
<!-- 按每小时滚动文件,如果一个小时内达到100M也会滚动文件, 滚动文件将会压缩成zip格式, 最多保留672个滚动文件 -->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>/data/tomcat/runtime/debug-%d{yyyy-MM-dd_HH}.%i.zip</fileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>100MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
<maxHistory>672</maxHistory>
</rollingPolicy>
<encoder>
<!-- 格式化输出:%date(d%)表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度, -->
<!-- %logger{36}表示logger名字最长36个字符,否则按照句点分割,%msg:日志消息,%n是换行符 -->
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender> <!-- 输出ERROR级别日志文件的appender -->
<appender name="RollingFileError" class="ch.qos.logback.core.rolling.RollingFileAppender">
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>ERROR</level>
</filter>
<File>/data/tomcat/error/error.log</File>
<!-- 按每小时滚动文件,如果一个小时内达到100M也会滚动文件, 滚动文件将会压缩成zip格式, 最多保留672个滚动文件 -->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>/data/tomcat/error/error-%d{yyyy-MM-dd_HH}.%i.zip</fileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>100MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
<maxHistory>672</maxHistory>
</rollingPolicy>
<encoder>
<!-- 格式化输出:%date(d%)表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度, -->
<!-- %logger{36}表示logger名字最长36个字符,否则按照句点分割,%msg:日志消息,%n是换行符 -->
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender> <!-- SMTP server的地址,必需指定。如网易126的SMTP服务器地址是: smtp.126.com -->
<property name="smtpHost" value="smtp.126.com"/>
<!-- SMTP server的端口地址。默认值:25 -->
<property name="smtpPort" value="25"/>
<!-- 发送邮件账号 -->
<property name="username" value="********@126.com"/>
<!-- 发送邮件密码(此密码为网易126邮箱的客户端授权密码,不是邮箱登录密码,126邮箱需要开启POP3/SMTP服务、IMAP/SMTP服务才可使用) -->
<property name="password" value="********"/>
<!-- 如果设置为true,appender将会使用SSL连接到日志服务器。默认值:false -->
<property name="SSL" value="false"/>
<!-- 指定发送到那个邮箱,可设置多个<to>属性,指定多个目的邮箱,收件人账号多个可以逗号隔开 -->
<property name="email_to" value="********@126.com"/>
<!-- 指定发件人名称。 -->
<property name="email_from" value="********@126.com" />
<!-- 指定emial的标题,它需要满足PatternLayout中的格式要求。如果设置成“Log: %logger - %msg”,就案例来讲,则发送邮件时, -->
<!-- 标题为“【Error】: com.****.****Task - null.equals”。 -->
<property name="email_subject" value="【Error】: %logger - %msg" /> <!-- 邮件发送的appender -->
<appender name="Email" class="ch.qos.logback.classic.net.SMTPAppender">
<smtpHost>${smtpHost}</smtpHost>
<smtpPort>${smtpPort}</smtpPort>
<username>${username}</username>
<password>${password}</password>
<asynchronousSending>false</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>
<!-- 这里采用等级过滤器,指定等级相符才发送,这里指定ERROR级别才发送 -->
<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> <!-- 日志输出,设置级别,指定appender -->
<root level="DEBUG">
<appender-ref ref="Console"/>
<appender-ref ref="RollingFileRun"/>
<appender-ref ref="RollingFileError"/>
<appender-ref ref="Email"/>
</root> </configuration>

三、设置网易126邮箱

四、使用

logger.error("null.equals");

五、邮件截图

logback错误日志发送邮件的更多相关文章

  1. springboot中用来进行查看错误日志的logback文件

    <?xml version="1.0" encoding="UTF-8"?> <!-- 从高到地低 OFF . FATAL . ERROR . ...

  2. SQL Server自动化运维系列——监控磁盘剩余空间及SQL Server错误日志(Power Shell)

    需求描述 在我们的生产环境中,大部分情况下需要有自己的运维体制,包括自己健康状态的检测等.如果发生异常,需要提前预警的,通知形式一般为发邮件告知. 在所有的自检流程中最基础的一个就是磁盘剩余空间检测. ...

  3. SQL Server自动化运维系列 - 监控磁盘剩余空间及SQL Server错误日志(Power Shell)

    需求描述 在我们的生产环境中,大部分情况下需要有自己的运维体制,包括自己健康状态的检测等.如果发生异常,需要提前预警的,通知形式一般为发邮件告知. 在所有的自检流程中最基础的一个就是磁盘剩余空间检测. ...

  4. Spring Boot Logback应用日志

    e Spring Boot Logback应用日志 2015-09-08 19:57 7673人阅读 评论(0) 收藏 举报 . 分类: Spring Boot(51) . 目录(?)[+] 日志对于 ...

  5. SpringBoot+logback实现日志打印

    logback介绍 logback是一款开源的日志框架,内核重写了,是基于log4j基础进行改良的.其官网为logback.qos.ch.logback在性能上有很大提升,拥有更多特性. logbac ...

  6. SQL Server 自动化运维系列 - 监控磁盘剩余空间及SQL Server错误日志(Power Shell)

    需求描述 在我们的生产环境中,大部分情况下需要有自己的运维体制,包括自己健康状态的检测等.如果发生异常,需要提前预警的,通知形式一般为发邮件告知. 在所有的自检流程中最基础的一个就是磁盘剩余空间检测. ...

  7. SLF4J其实只是一个门面服务而已,他并不是真正的日志框架,真正的日志的输出相关的实现还是要依赖Log4j、logback等日志框架的。

    小结: 1.加层: 每一种日志框架都有自己单独的API,要使用对应的框架就要使用其对应的API,这就大大的增加应用程序代码对于日志框架的耦合性. 为了解决这个问题,就是在日志框架和应用程序之间架设一个 ...

  8. logback配置日志输出

    <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> & ...

  9. Sentry错误日志监控你会用了吗?

    无论作为新手还是老手程序员在程序的开发过程中,代码运行时难免会抛出异常,而且项目在部署到测试.生产环境后,我们便不可能像在开发时那样容易的及时发现处理错误了.一般我们都是在错误发生一段时间后,错误信息 ...

随机推荐

  1. java 继承类之后,访问不到超类的属性的原因及解决方法

    是因为超类里的属性没有加上public关键字 解决方法: 超类和超类里的属性或者方法如果想被其他包下的方法调用,就必须全部加上public权限,即设置为公开访问 例: @Controller publ ...

  2. JAVAWEB tomcat服务器启动错误原因总结

    tomcat服务器启动错误: org.apache.catalina.LifecycleException    这种异常的原因是  servlet的代码出现了错误 实例: 这里的servlet由于使 ...

  3. CS100.1x-lab2_apache_log_student

    这次的作业主要用PySpark来分析Web Server Log.主要分成4个部分.相关ipynb文件见我github. Part 1 Apache Web Server Log file forma ...

  4. C# 其他的Url 文件的路径转化为二进制流

    //将虚拟路径转化为文件的路径然后最后转化为文件流 public ActionResult SaveImage(string path) { var url =System.Web.HttpConte ...

  5. CSS过渡动画之transition

    O(∩_∩)O~ 这两天在看看CSS的相关内容,关于transition动画感觉很有意思,分享一下. CSS负责给html加效果,自然少不了各种动画,今天介绍一下transition. 概述 看一段比 ...

  6. jsp如何往js里传值

    1.jsp里定义id: 2.js里用j-query选择器获取(     $('#id).val();      )    或者docment.getEle....获取.

  7. JUC——延迟队列

    所谓的延迟队列最大的特征是它可以自动通过队列进行脱离,例如:现在有一些对象被临时保存着,但是有可能该集合对象是一个公共对象,那么里面的某些数据如果不在使用的时候就希望其可以在指定的时间达到后自动的消失 ...

  8. Revit开发小技巧——撤销操作

    最近开发Revit命令需要限制某些操作,思路是监控用户操作,如果达到限制条件,将操作回退.思路有两种: 1.调用WindowsAPI,发送快捷命令Ctrl+Z. 2.通过Revit底层提供DLL找到回 ...

  9. python属性访问

    1.python属性访问魔法方法: >>> class C: def __getattribute__(self,name): print("getattribute&qu ...

  10. VOT工具操作指南(踩过的坑)

    为了运行在VOT里DaSiamRPN,配置了很久环境,我电脑的配置是Ubuntu16.04+MatlabR2018a+pytorch0.3. 下面是一些从网上整理的操作步骤: 1.首先是工具箱的下载: ...