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. 使用Keil下载单独的Hex文件到单片机内

    前言 初学STM32时,是通过串口1把Hex文件下载进STM32的,需要一个串口模块,而且还要设置BOOT0和BOOT1电平,然后通过FlyMcu软件进行下载,这也是一种不错的方法,这里我要介绍的是使 ...

  2. Nessus 用好的网络(比如热点)就可以正常在线更新扫描插件了

    折腾那么多不如直接开热点 nethogs 实时查看网络流量 ( linux下 )

  3. 神器 Tmux 的超绝便利

    服务器的任务不间断运行,就是利用了 tmux 的特性.就是说,一般 ssh 是断开就会停止所有之前连接 ssh 期间运行的所有 processes,而 tmux 的核心业务不在于把屏幕分成几块好看,而 ...

  4. Spring学习(十六)----- Spring AOP实例(Pointcut(切点),Advisor)

    在上一个Spring AOP通知的例子,一个类的整个方法被自动拦截.但在大多数情况下,可能只需要一种方式来拦截一个或两个方法,这就是为什么引入'切入点'的原因.它允许你通过它的方法名来拦截方法.另外, ...

  5. 没听说过这些,就不要说你懂并发了,two。

    引言 为了更加形象的描述并发的基础知识,因此本文LZ采用了园子里一度大火的标题形式——“没听说过XXXX,就不要说你XXXX了”.希望能够给猿友们一个醒目的警醒,借此来普及并发的基础知识,也讨论一下这 ...

  6. X5webview去掉分享功能和缓存功能

    x5webview比原生的webview适配更好,加载更快,对音视频的兼容性更好,具备独特的优势 1) 速度快:相比系统webview的网页打开速度有30+%的提升: 2) 省流量:使用云端优化技术使 ...

  7. linux 开机报错,error grub_efi_find_mmap_size not find

    开机报错,差点以为要重装系统了 搜到了官方的重建引导的教程 修复了错误 https://wiki.manjaro.org/index.php/Restore_the_GRUB_Bootloader#F ...

  8. 控制台报错: SCRIPT1006: Expected ')'

    今天做网站的时候,jsp页面取一个值死活取不出来. <script> if(${not empty requestScope.article.articleId}){ alert(${re ...

  9. golang应用打包成docker镜像

    golang编译的应用是不需要依赖其他运行环境的,那么为什么还需要打包成docker镜像呢?当需要附带配置和日志等文件时可以更方便的移植和运行,下面介绍从dockerfile编译成镜像. 在项目根目录 ...

  10. window搭建私有云,只要几分钟

    本文介绍如何在window搭建私有云网盘. 工具/原料:一台window系统电脑或者window服务器(vps),Xampp 安装包,可道云kodexplorer安装包 第一步,xampp安装 1.官 ...