我们看一下日志记录器的支持,logback,既支持log4j,也支持logback,找到我们的pom文件,然后看一下他的注入包,在这里我们可以看到有log4j的jar包,有slf4j的,还有logback,还有log4j的都有,logback有的人可能知道他,是log4j的一个扩展,据说logback的日志记录性能,要比log4j的性能要高很多,所以logback以后有替代log4j的一个趋势,所以在springboot当中,他在WEB启动器当中,包含了logback的jar包,那么也就是说,现在在我们的SpringBoot当中,可以使用logback日志记录器了,我们来看一下logback日志记录器的使用,首先他需要有一个配置文件,logback日志记录器的一个日志文件,他的配置文件叫什么呢,叫logback.xml,我们现在去把配置文件的模板找过来,放到我们的resources目录下,然后我们看一下,其实logback和log4j的最大的区别,就是配置文件上有变化,log4j使用的是properties配置文件,但是在logback日志记录器当中呢,他的配置文件使用的是XML的配置,其实配置项也都差不多,logback相对于log4j相对更丰富一些,我们来看一下,我们先来看第一个<!--定义日志文件的存储地址 勿在 LogBack 的配置中使用相对路径-->
<property name="LOG_HOME" value="${catalina.base}/logs/" />这个定义的是什么呢,上面有注释,它是定义日志文件的存储地址,在logback当中使用相对路径,我会把项目的相对路径,后面加一个logs,作为我未来存放日志文件的一个位置,相对于抽象化出来一个项目的根路径,并且后面加了一个logs,<!-- 控制台输出 -->
<appender name="Stdout" class="ch.qos.logback.core.ConsoleAppender"><!-- 日志输出编码 -->  <layout class="ch.qos.logback.classic.PatternLayout">   <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符--> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n   </pattern>   </layout>
</appender> 这一块对应是我们的log4j当中的appender的设置,这一部分表示的是向控制台输出,然后appender后面有一个name,name叫什么都行,他的名字是我自己来定义的,表示我们这个日志输出的一个名称,然后后面是一个class,意思是向控制台输出,我们log4j当中,向控制台输出是ConsoleAppender,然后Appender里面有日志输出的内容,比如说他的布局,然后用的也是他的PatternLayout,里面是pattern,是他输出的一个格式,这个其实是和我们的log4j编写格式是一模一样的,不同的是像我们原来的key,现在变成用XML的节点来表示了,所以这块也并不是很复杂,我来说一下,这个是向控制台输出的一个格式,下面这一部分呢<!-- 按照每天生成日志文件 -->
<appender name="RollingFile"  class="ch.qos.logback.core.rolling.RollingFileAppender">   <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><!--日志文件输出的文件名--><FileNamePattern>${LOG_HOME}/server.%d{yyyy-MM-dd}.log</FileNamePattern>   <MaxHistory>30</MaxHistory></rollingPolicy>   <layout class="ch.qos.logback.classic.PatternLayout">  <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符--> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n   </pattern>   </layout> <!--日志文件最大的大小--><triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy"><MaxFileSize>10MB</MaxFileSize></triggeringPolicy>
</appender>其实就是向文件输出了,RollingFile,RollingFileAppender,然后日志输出的文件名称,因为你要向文件输出,你肯定要有一个文件输出的名称,然后在这里你看,取了LOG_HOME,就是项目根目录下的logs文件夹,将作为我存放文件的一个位置,server.%d{yyyy-MM-dd}.log这是我日志文件的名称,日志文件的名称我加了一个server的前缀,用日期来表示日志文件,不同日志文件的区别,<MaxHistory>30</MaxHistory>然后这是创建多少个日志文件,最多创建30个日志文件,然后这是向日志文件中输出的格式<layout class="ch.qos.logback.classic.PatternLayout">  <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符--> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n   </pattern>
</layout> 然后这是日志文件的大小<!--日志文件最大的大小-->
<triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy"><MaxFileSize>10MB</MaxFileSize>
</triggeringPolicy>单个文件超过10MB了,它会重新去创建一个日志文件,来进行日志的保存,然后下面这一块是日志输出的级别<root level="debug">   <appender-ref ref="Stdout" />   <appender-ref ref="RollingFile" />
</root> 这就相当于log4j上面的root,现在我是输出debug级别的,然后向控制台输出,同时又想文件输出,如果你只想控制台输出,不想向文件当中输出,你把这个去掉就可以了,<appender-ref ref="RollingFile" />  <root level="debug">   <appender-ref ref="Stdout" />
</root>然后级别这块我们也可以设置多个,由低到高,由高到低,logback还支持将日志信息同步到数据库里<!--日志异步到数据库 -->
<!--     <appender name="DB" class="ch.qos.logback.classic.db.DBAppender">日志异步到数据库 <connectionSource class="ch.qos.logback.core.db.DriverManagerConnectionSource">连接池 <dataSource class="com.mchange.v2.c3p0.ComboPooledDataSource"><driverClass>com.mysql.jdbc.Driver</driverClass><url>jdbc:mysql://127.0.0.1:3306/databaseName</url><user>root</user><password>root</password></dataSource></connectionSource></appender> -->因为我们不打算做数据库的同步了,这块留着一个模板,想把信息同步到数据库当中,这个可以放开,这个我们也可以简单的看一下,他用的是一个DBAppender去做的,然后这里需要注意的就是,配置一个数据源,他这里数据源用的是C3P0的数据源,就意味着你这个数据库必须要有C3P0的数据源,然后这块是MYSQL的驱动,然后你如果是ORACLE就写ORACLE的驱动,然后就是连接MYSQL的url,换乘自己库的信息就可以了,用户名和密码,把这些配好以后,他在产生错误的时候呢,会将日志同步到数据库当中,其实这个过程是我们需要注意的,因为什么呢,日志他的量肯定是非常大的,如果我们把信息都同步到数据库当中,对于数据库来讲,压力也是非常大的,很少才采取这样的策略去保存,我们这块说完了,我们可以看一下,其实我们只要加入这个配置文件就可以了,jar包我们就不用了,我们打开pom文件,我们看到有logback的jar包了

现在我们输出的是DEBUG级别,那我们来看一下是不是按照DEBUG级别来输出的<root level="DEBUG">   <appender-ref ref="Stdout" />   <appender-ref ref="RollingFile" />
</root> 我们发现比没有加logback之前的日志要多的多,我们看上面,都是DEBUG级别的,当然DEBUG级别的信息太多了,可以根据自己的需要去调整,比如我们这里改成info<root level="info">   <appender-ref ref="Stdout" />   <appender-ref ref="RollingFile" />
</root> 只是输出info级别的,我们可以运行一下,我们可以看到信息明显的小了不少,我们现在输出的也都是info级别的了,或者是warn级别,或者是error级别,可以根据自己的需求来定义,所以logback的配置文件呢,相对于log4j的配置文件呢,可能在表现形式上,可能更复杂一些,但是其实功能比我们的log4j功能要强大一些,还有就是性能上,要高于我们的log4j,所以这一块可以去看一看,更详细的一个配置,这里就不做太多的介绍,不是一个太复杂的一个技术,如果我们有log4j的底子去看这个东西,是非常的简单,如果我们项目当中要用logback日志记录,第一步需要导入相关的jar包,log4j的jar肯定要导入进来了,第二个是添加logback的配置文件
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.learn</groupId><artifactId>springboot-hello</artifactId><version>0.0.1-SNAPSHOT</version><name>springboot-hello</name><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>1.5.12.RELEASE</version></parent><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><java.version>1.8</java.version></properties><dependencies><!-- springBoot的启动器 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>
<?xml version="1.0" encoding="UTF-8" ?><configuration>
<!--定义日志文件的存储地址 勿在 LogBack 的配置中使用相对路径-->  <property name="LOG_HOME" value="${catalina.base}/logs/" />  <!-- 控制台输出 -->   <appender name="Stdout" class="ch.qos.logback.core.ConsoleAppender"><!-- 日志输出编码 -->  <layout class="ch.qos.logback.classic.PatternLayout">   <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符--> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n   </pattern>   </layout>   </appender>   <!-- 按照每天生成日志文件 -->   <appender name="RollingFile"  class="ch.qos.logback.core.rolling.RollingFileAppender">   <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><!--日志文件输出的文件名--><FileNamePattern>${LOG_HOME}/server.%d{yyyy-MM-dd}.log</FileNamePattern>   <MaxHistory>30</MaxHistory></rollingPolicy>   <layout class="ch.qos.logback.classic.PatternLayout">  <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符--> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n   </pattern>   </layout> <!--日志文件最大的大小--><triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy"><MaxFileSize>10MB</MaxFileSize></triggeringPolicy></appender>     <!-- 日志输出级别 --><root level="info">   <appender-ref ref="Stdout" />   <appender-ref ref="RollingFile" />   </root> <!--日志异步到数据库 -->
<!--     <appender name="DB" class="ch.qos.logback.classic.db.DBAppender">日志异步到数据库 <connectionSource class="ch.qos.logback.core.db.DriverManagerConnectionSource">连接池 <dataSource class="com.mchange.v2.c3p0.ComboPooledDataSource"><driverClass>com.mysql.jdbc.Driver</driverClass><url>jdbc:mysql://127.0.0.1:3306/databaseName</url><user>root</user><password>root</password></dataSource></connectionSource></appender> --></configuration>
package com.learn.springboothello;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplication
public class SpringbootHelloApplication {public static void main(String[] args) {SpringApplication.run(SpringbootHelloApplication.class, args);}}

logback日志记录器讲解相关推荐

  1. 【SpringBoot】Logback日志框架介绍和SpringBoot整合实战

    ========================11.Logback日志框架介绍和SpringBoot整合实战 2节课================================ 1.新日志框架L ...

  2. Tomcat源码分析(六)--日志记录器和国际化

    本系列转载自 http://blog.csdn.net/haitao111313/article/category/1179996 日志记录器挺简单的,没有很多东西,最主要的就是一个Logger接口: ...

  3. Logback日志使用详解

    概述 Logback建立于三个主要类之上:日志记录器(Logger),输出端(Appender)和日志格式化器(Layout).这三种组件协同工作,使开发者可以按照消息类型和级别来记录消息,还可以在程 ...

  4. SpringMVC学习(三)——SpringMVC+Slf4j+Log4j+Logback日志集成实战分享

    文章目录 1.概述 1.1 说明 1.2 日志体系 1.2.1 JCL日志面门介绍 1.2.2 Slf4j日志面门介绍 2.几种日志系统介绍: 2.1 Slf4j 2.2 Commons-loggin ...

  5. Log4--Java日志记录器

    Log4–Java日志记录器 一.Log4 Log4j是Apache的一个开源项目,它允许开发者以任意间隔输出日志信息..主要分为两部分:一是appender,是输出日志的方式:二是logger,是具 ...

  6. java 如何去掉http debug日志_Spring Boot手把手教学(3):从零配置logback日志

    前言 使用logback我们可以自定义控制台日志输出,可以实现对不同日志不同级别打印到不同的文件中,可以对日志进行归档保存,并定时删除: 对于一个应用来讲,一个好的日志系统,对于对问题的追溯有很大的帮 ...

  7. logback日志配置详解

    一. 近期自己的项目想要一个记录日志的功能,而springboot本身就内置了日志功能,然而想要输入想要的日志,并且输出到磁盘,然后按天归档,或者日志的切分什么的,自带的日志仅仅具有简单的功能,百度了 ...

  8. 配置Logback日志

    日志 1.配置日志级别 2.Logback日志 2.1 配置logback日志 2.2 将错误日志输出到文件 2.3 将日志堆栈信息输出到文件 小结 1.配置日志级别 日志记录器(Logger)的行为 ...

  9. spring boot项目中使用logback日志详解

    1. spring boot中的默认日志 SpringBoot为Java Util Logging,Log4J2和Logback提供了默认配置.SpringBoot默认配置日志输出到控制台,同时还提供 ...

最新文章

  1. java编写socket使用bufferedReader.readLine()问题研究
  2. python爬虫源码下载 视频_Python爬虫下载视频文件部分源码
  3. 云服务器+开发板搭建直播系统,自建流媒体服务器开直播
  4. BeanFactory和ApplicationContext有什么区别?
  5. Ubuntu 20.10安装docker
  6. php 长整型转字符串 (convert long to string)
  7. iOS开发 网络编程 Socket编程
  8. 微软宣布与中国电子科技集团筹建合资公司
  9. THCudaCheck FAIL file=/pytorch/aten/src/THC/THCGeneral.cpp line=405 error=11 : invalid argument
  10. C# 自定义网格 dataGridView 初始化 修改数据
  11. python开三次方_python 三次方
  12. 安装CAD显示计算机丢失SETUPUI,彻底解决CAD2012不能安装问题.docx
  13. 项目UML设计--日不落战队
  14. 小白学python——程序结构
  15. python新手快速入门教程-10 分钟快速入门 Python3的教程
  16. Machine Learning读书会,面试算法讲座,算法公开课,创业活动,算法班集锦
  17. ubuntu 安装nodebb
  18. pwm一个时间单位_时间的换算单位是怎么换算的啊,秒,毫秒,微妙,纳秒等
  19. 美团2023届笔试题解
  20. webp文件_什么是WebP文件(以及如何打开一个文件)?

热门文章

  1. How to use the SQLIOSim utility to simulate SQL Server activity on a disk subsystem
  2. 【大话数据结构算法】直接选择排序
  3. [翻译]React组件模式
  4. 《程序员代码面试指南》第二章 链表问题 搜索二叉树转换为双向链表
  5. 《 Python树莓派编程》——第1章 树莓派简介 第1.1 树莓派的历史
  6. openssl pem 生成公钥和私钥及文件
  7. mactex中文配置
  8. android中字符串转换成整型
  9. gbk编码的简介以及针对gbk文本飘红截断原理以及实现
  10. 网上教育能改变教育不公平的现状吗?